我有一个大型Java项目,项目的每个子部分都有一个子pom.xml。父pom有我想要的关键数据,用户名和密码。我的问题是如何从我的java程序中的父pom.xml中提取这些数据?
父pom.xml在配置文件部分有很多配置文件,其中包含我需要的数据。我找到了一个类似的例子,简单地说代码System.getProperty('property.name');
当我尝试这个时,代码只返回null。我认为这是因为我从target
目录而不是通过Maven运行代码,但我可能完全错了。
有谁知道我错过了什么?
此致
答案 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 );
}
}