6

我正在尝试在 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

使用文档我已将pomPropertiesFile元素指向外部属性,但生成的 pom.properties 文件在运行后仍然具有默认内容mvn install

pomPropertiesFile元素的正确用法是什么?

编辑

我相信问题出在 org.apache.maven.archiver.PomPropertiesUtil 上。如果您查看源代码sameContents中的方法,如果外部文件中的属性与默认值相同,则返回 true;如果不同,则返回 false。如果结果为假,则忽略外部文件的内容。sameContents

果然,这已经被记录为错误

4

2 回答 2

0

我认为您需要在 src/main/resources/META-INF/${groupId}/${artifactId}/interface.properties 下放置一个文件,然后让 maven 进行过滤工作(配置过滤)。该文件将自动复制到 target/META-INF/maven/${groupId}/${artifactId}/ 位置。

于 2012-04-11T12:43:49.110 回答
0

请参阅https://issues.apache.org/jira/browse/MNG-4998

Maven 3 将在读取 pom.xml 以获取此时可用的所有属性值时急切地解析属性占位符。以后修改这些属性不会影响 pom.xml 中已经解析的值。

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

于 2016-05-13T08:36:59.320 回答