通过属性文件指定 pom 属性?
Specify pom properties via a properties file?
由于我的构建系统的设计方式(RTC 构建引擎),我想通过属性文件为 Maven 提供 属性 值,而不是为每个 [=23] 指定 -Dkey=value =].
我在 S.O 上发现了几个问题。 (How to set build properties from a file in Maven POM? and How to read an external properties file in Maven) 与这个问题完全相关,但它们相对较旧,并且都需要自定义插件才能工作(处于 alpha 状态)。
我意识到像这样将参数传递给 Maven 可能不是最好的解决方案,但另一个选项是通过 -D 设置在命令行上指定所有内容,这也不理想。
此外,考虑到这个属性文件只真正被构建引擎使用(而不是被个人开发者使用),我并不真正相信它属于 pom.xml 文件。但是我找不到任何其他允许我指定要使用的插件的机制 - settings.xml 不允许指定插件。
在这种情况下我唯一的选择是使用插件并在项目pom中指定它吗?
在 pom 中你可以放置...
<properties>
<core-version>1234</core-version>
<lib-version>1234</lib-version>
<build-version>9999</lib-version>
<build-date>20150101</build-date>
</properties>
具有您需要的所有属性。
或者您可以使用...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>dev.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
并且文件 dev.properties
将包含属性
core-version=1234
lib-version=1234
build-version=9999
build-date=20150101
...
或者...您可以使用 settings.xml 文件注入属性,如图 here
您可能还会发现 Maven 内部版本号插件很有用...here
在这种情况下,最好至少升级到 Maven 3.2.1,它支持在命令行上定义此类属性,如下所示:
mvn -Drevision=1234 -Dchangelist=WhatEver -Dsha1=XXXX clean package
但您只能使用以上名称。
A simple change to prevent Maven from emitting warnings about versions
with property expressions. Allowed property expressions in versions
include ${revision}, ${changelist}, and ${sha1}. These properties can
be set externally, but eventually a mechanism will be created in Maven
where these properties can be injected in a standard way. For example
you may want to glean the current Git revision and inject that value
into ${sha1}. This is by no means a complete solution for continuous
delivery but is a step in the right direction.
由于我的构建系统的设计方式(RTC 构建引擎),我想通过属性文件为 Maven 提供 属性 值,而不是为每个 [=23] 指定 -Dkey=value =].
我在 S.O 上发现了几个问题。 (How to set build properties from a file in Maven POM? and How to read an external properties file in Maven) 与这个问题完全相关,但它们相对较旧,并且都需要自定义插件才能工作(处于 alpha 状态)。
我意识到像这样将参数传递给 Maven 可能不是最好的解决方案,但另一个选项是通过 -D 设置在命令行上指定所有内容,这也不理想。
此外,考虑到这个属性文件只真正被构建引擎使用(而不是被个人开发者使用),我并不真正相信它属于 pom.xml 文件。但是我找不到任何其他允许我指定要使用的插件的机制 - settings.xml 不允许指定插件。
在这种情况下我唯一的选择是使用插件并在项目pom中指定它吗?
在 pom 中你可以放置...
<properties>
<core-version>1234</core-version>
<lib-version>1234</lib-version>
<build-version>9999</lib-version>
<build-date>20150101</build-date>
</properties>
具有您需要的所有属性。
或者您可以使用...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>dev.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
并且文件 dev.properties
将包含属性
core-version=1234
lib-version=1234
build-version=9999
build-date=20150101
...
或者...您可以使用 settings.xml 文件注入属性,如图 here
您可能还会发现 Maven 内部版本号插件很有用...here
在这种情况下,最好至少升级到 Maven 3.2.1,它支持在命令行上定义此类属性,如下所示:
mvn -Drevision=1234 -Dchangelist=WhatEver -Dsha1=XXXX clean package
但您只能使用以上名称。
A simple change to prevent Maven from emitting warnings about versions with property expressions. Allowed property expressions in versions include ${revision}, ${changelist}, and ${sha1}. These properties can be set externally, but eventually a mechanism will be created in Maven where these properties can be injected in a standard way. For example you may want to glean the current Git revision and inject that value into ${sha1}. This is by no means a complete solution for continuous delivery but is a step in the right direction.