我想在我的应用程序中指定一些系统属性(在编译时确定)。
我正在使用spring boot maven插件进行编译
目前,根据这些问题:Specify system property to Maven project 我尝试了以下设置(但是这不适用于不同的插件)
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>application.boot.AppStarter</mainClass>
<systemProperties>
<systemProperty>
<name>application.version</name>
<value>${application.version}</value>
</systemProperty>
<systemProperty>
<name>release.date</name>
<value>${timestamp}</value>
</systemProperty>
</systemProperties>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
如何在此插件中指定属性?
答案 0 :(得分:1)
您添加的Java系统属性只能由添加它们的进程访问。因此,即使您在Maven构建期间设置添加某些系统属性,构建完成时也不再存在。
如果您将罐子分发给其他人,会发生什么。您如何期望这些房产可用?
请参阅此post以了解如何在运行时访问artifactId和版本
以类似的方式,您也可以将时间戳条目添加到src/main/resources/project.properties
buildTimestamp=${timestamp}
timestamp
不是project.version
或project.artifactId
之类的预定义属性。因此,您必须设置从Maven属性${maven.build.timestamp}
中提取时间戳并将其设置为您timestamp
财产的价值。这已在this question中得到解答。