在Spring Boot Plugin中定义系统属性

时间:2014-10-26 14:26:22

标签: java spring maven spring-boot system-properties

我想在我的应用程序中指定一些系统属性(在编译时确定)。

我正在使用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>

如何在此插件中指定属性?

1 个答案:

答案 0 :(得分:1)

您添加的Java系统属性只能由添加它们的进程访问。因此,即使您在Maven构建期间设置添加某些系统属性,构建完成时也不再存在。

如果您将罐子分发给其他人,会发生什么。您如何期望这些房产可用?

解决方案

请参阅此post以了解如何在运行时访问artifactId和版本 以类似的方式,您也可以将时间戳条目添加到src/main/resources/project.properties

buildTimestamp=${timestamp}

timestamp不是project.versionproject.artifactId之类的预定义属性。因此,您必须设置从Maven属性${maven.build.timestamp}中提取时间戳并将其设置为您timestamp财产的价值。这已在this question中得到解答。