繁体   English   中英

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

[英]How to extract properties data from a profile in a parent pom.xml?

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

父pom.xml在配置文件部分中有许多配置文件,这些配置文件是我需要的数据。 我发现了一个类似的示例,据说该示例System.getProperty('property.name');编码System.getProperty('property.name'); 当我尝试此代码只是返回null。 我认为这是因为我是从target目录而不是通过Maven运行代码的,但是我对此可能完全错了。

有人知道我在想什么吗?

问候,

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

参考

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

我的答案显然会反对@grid建议的答案。 尽管Maven是一个构建工具,但是它也是一个很好的工具,当您深入考虑它时,它可以提供任何功能。

曾经有一段时间,我需要挂接一个自定义属性文件,并要求Maven使用项目属性对其进行过滤,然后以java.util.Properties形式在源代码中读取该文件内容的输入。

我想现在已经结束了,因为所有的负担都由Properties Maven插件为您完成,该插件的目标是“ set-system-properties ”,可以使项目属性 (那些由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 );
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM