我正在尝试在Maven在META-INF/maven/${groupId}/${artifactId}
位置生成的pom.properties文件中添加自定义值
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifestEntries>
<build>${BUILD_TAG}</build>
</manifestEntries>
<addMavenDescriptor>true</addMavenDescriptor>
<pomPropertiesFile>${project.build.directory}\interface.properties</pomPropertiesFile>
</archive>
</configuration>
</plugin>
interface.properties文件的内容是
# Build Properties
buildId=746
使用documentation我已将pomPropertiesFile
元素指向外部属性,但生成的pom.properties文件在运行mvn install
后仍具有默认内容
pomPropertiesFile
元素的正确用法是什么?
修改
我认为问题在于org.apache.maven.archiver.PomPropertiesUtil。如果查看source中的方法sameContents
,如果外部文件中的属性与默认值相同则返回true,如果不同则返回false。如果sameContents
的结果为false,则忽略外部文件的内容。
果然,这已经logged作为一个错误
答案 0 :(得分:0)
我认为您需要将文件放在src / main / resources / META-INF / $ {groupId} / $ {artifactId} /interface.properties下,让maven执行过滤作业(配置过滤)。该文件将自动复制到target / META-INF / maven / $ {groupId} / $ {artifactId} / location。
答案 1 :(得分:0)
请参阅https://issues.apache.org/jira/browse/MNG-4998
Maven 3将在读取pom.xml时急切地解析属性占位符,以获取此时可用的所有属性值。稍后修改这些属性不会影响已在pom.xml中解析的值。
但是,如果属性值不可用(没有默认值),则占位符不会被值替换,以后仍可以作为占位符处理。例如,如果插件在构建期间生成某些属性,或者在某些构建步骤中插件读取并处理占位符。