如何从父pom.xml中的配置文件中提取属性数据?

时间:2015-03-24 20:56:27

标签: java maven

我有一个大型Java项目,项目的每个子部分都有一个子pom.xml。父pom有我想要的关键数据,用户名和密码。我的问题是如何从我的java程序中的父pom.xml中提取这些数据?

父pom.xml在配置文件部分有很多配置文件,其中包含我需要的数据。我找到了一个类似的例子,简单地说代码System.getProperty('property.name');当我尝试这个时,代码只返回null。我认为这是因为我从target目录而不是通过Maven运行代码,但我可能完全错了。

有谁知道我错过了什么?

此致

2 个答案:

答案 0 :(得分:1)

Maven是一个构建工具(还有更多)。你的程序不知道它的存在。您可能引用的示例使用一些maven和您的代码都可用的系统属性。 您可以在maven中引用系统属性。很容易。

请参阅reference

  

可以从System.getProperty()检索的任何属性   方法可以作为Maven属性引用。

答案 1 :(得分:1)

我的答案显然会反对@grid建议的答案。虽然 Maven 是一个构建工具,但是当你深思熟虑时它也可以提供任何功能。

曾经有一段时间我需要挂钩自定义属性文件并要求Maven使用项目属性过滤它,然后将源代码中的文件内容输入为java.util.Properties

现在这个部分已经结束了,因为Properties Maven Plugin有一个cutom目标,#34; set-system-properties &#,所有的负担都是由你完成的。 34;,可以使项目属性(由 Maven 使用的那些,并且被称为构建时属性)可用作运行时属性,更准确地说是系统属性

您可以在构建部分添加自定义插件配置代码段,即项目中的自定义插件配置代码段,如下所示:

<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>1.0-alpha-2</version>
        <executions>
          <execution>
            <goals>
              <goal>set-system-properties</goal>
            </goals>
            <configuration>
              <properties>
                <property>
                  <name>property.name</name>
                  <value>${project.version}</value>
                </property>
              </properties>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

虽然您可以为您的媒体资源设置任何值,但请注意占位符${...}的使用情况,以便在插入项目描述符时 Maven 解析该媒体资源。您可以通过这种方式引用任何属性,然后按照主帖中的建议在运行时使用它:

package com.github.tmarwen.stackoverflow.maven.properties.showcase;

public Main {
  public static void main( String... args ) {
    String value = System.getProperty( "property.name" );
    System.out.print( value );
  }
}