Maven pom.properties文件中的自定义值

时间:2012-04-11 08:55:56

标签: maven maven-3 pom.xml

我正在尝试在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作为一个错误

2 个答案:

答案 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中解析的值。

但是,如果属性值不可用(没有默认值),则占位符不会被值替换,以后仍可以作为占位符处理。例如,如果插件在构建期间生成某些属性,或者在某些构建步骤中插件读取并处理占位符。