我在我的pom.xml中添加了一个节点:
<properties>
<getdownload-webapp.version>1.5</getdownload-webapp.version>
</properties>
我如何才能在代码中获得这个1.5值?
String version = System.getProperty("getdownload-webapp.version"); // output version = null
这段代码在运行时显示为null (
ps:此项目中没有settings.xml
发布于 2018-09-23 19:17:44
所以你有一个像这样的属性。
<properties>
<getdownload-webapp.version>1.5</getdownload-webapp.version>
</properties>
在Maven项目中创建一个文件,如下所示。
src/main/resources/project.properties
或者,如果它仅用于测试,则如下所示。
src/test/resources/project.properties
在新文件中添加以下行。请注意,您不应该使用"properties“作为前缀(例如,不要写"properties.getdownload-webapp.version")。
version=${getdownload-webapp.version}
请注意,您还可以向文件中添加类似这样的标志。
debug=false
如果还没有,您必须为您的项目启用Maven过滤。该功能将在项目文件中查找要替换为pom中的值的占位符。要继续操作,您需要在pom.xml文件的<build>
标记内添加这些行。下面是src/main的使用方法:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
...
下面是src/test的使用方法:
<build>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</testResource>
</testResources>
...
最后,在源代码(MyClassName.java
)中添加一个代码块,如下所示
Properties props = new Properties();
props.load(MyClassName.class.getClassLoader().getResourceAsStream("project.properties"));
String version = props.getProperty("version");
您可以向project.properties
文件添加任意数量的变量,并使用此方法加载每个变量。
发布于 2014-10-16 20:25:42
我假设你想把它放到代码中去检查一些东西,对吧?您可以使用maven中的过滤,它将在源代码中注入值,类似于过滤选项http://mojo.codehaus.org/templating-maven-plugin/。
发布于 2018-09-23 21:45:57
Maven Resource Plugin提供的机制主要负责将Maven属性传递给Java应用程序
该插件是Maven Super Pom的一部分,在Jar Default生命周期的process-resources
阶段执行。您需要做的唯一一件事就是访问active filtering。
这将用您的pom中的相应属性替换任何占位符,例如src/main/resources
中的任何文件中的${my.property}
如何使该属性对Java应用程序可用取决于您-从类路径中读取它就可以了。
https://stackoverflow.com/questions/26404343
复制相似问题