Miko
Miko

Reputation: 2633

Maven : Unable to get Property Value from Proprties file

I'm a newbee in apache Maven. When i try to read the values from the properties file, it's not picking the value. I already seen all the previously asked questions in SO. But no luck with that. This is my property file.

nameofmayil=mayilsamy

This is the pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mycompany.mayil</groupId>
  <artifactId>mayil-app</artifactId>
  <version>1.0.1</version>
  <packaging>jar</packaging>

  <name>mayil-app</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>    
      <dependency>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>1.0-alpha-2</version>
      </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>


    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.6</version>
    </dependency>
  </dependencies>

  <scm>
    <connection>scm:svn:http://127.0.0.1/svn/my-project</connection>
    <developerConnection>scm:svn:https://127.0.0.1/svn/my-project</developerConnection>
    <tag>HEAD</tag>
    <url>http://127.0.0.1/websvn/my-project</url>
  </scm>

    <build>
        <plugins>

            <plugin>
                  <groupId>org.codehaus.mojo</groupId>
                  <artifactId>properties-maven-plugin</artifactId>
                  <version>1.0-alpha-2</version>
                  <executions>
                    <!-- Associate the read-project-properties goal with the initialize phase, to read the properties file. -->
                    <execution>
                      <phase>initialize</phase>
                      <goals>
                        <goal>read-project-properties</goal>
                      </goals>
                      <configuration>
                        <files>
                          <file>${basedir}/buildNumber.properties</file>
                          <file>${basedir}/mayil.properties</file>
                        </files>
                        <quite>false</quite>
                      </configuration>
                    </execution>
                  </executions>
                </plugin>

                <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <version>1.6</version>
                  <executions>
                    <execution>
                      <phase>validate</phase>
                      <goals>
                        <goal>run</goal>
                      </goals>
                      <configuration>
                        <target>
                          <echo>Displaying value of properties</echo>
                          <echo>${nameofmayil}</echo>
                        </target>
                      </configuration>
                    </execution>
                  </executions>
                </plugin>
          </plugins>
      </build>
</project>

The property file is loaded properly, i checked with that.

Upvotes: 0

Views: 1363

Answers (1)

user944849
user944849

Reputation: 14951

The POM shown has the properties-maven-plugin execution bound to the initialize phase, and the antrun plugin goal displaying the properties bound to the validate phase. initialize comes after validate (per the Maven lifecycle docs) which is why you're not seeing the results you want. You may fix in a couple of ways:

  • bind the properties-maven-plugin goal to the validate phase OR
  • bind the maven-antrun-plugin goal to the initialize phase

Both of the above have goals bound to the same phase. This is fine, as long as the goals are listed in the POM in the order you want them to execute. If you want them bound to distinct phases, perform both steps.

Upvotes: 2

Related Questions