[英]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.