我有一个多模块项目,它使用buildnumber:hgchangeset插件生成 changeSet 和 changeSetDate 属性,然后将它们放入每个模块的清单中,如下所示:
pom.xml(父):
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>hgchangeset</goal>
</goals>
</execution>
</executions>
</plugin>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestEntries>
<ProjectVestion>${project.version}</ProjectVestion>
<ChangeSet>${changeSet}</ChangeSet>
<ChangeSetDate>${changeSetDate}</ChangeSetDate>
</manifestEntries>
</archive>
</configuration>
</plugin>
经过一些实验,我发现为每个模块执行 buildnumber:hgchangeset 为整个构建时间贡献了大量时间,大概是因为它每次需要获取本地 repo 的变更集 ID 时都会分叉 hg.exe。
然后我认为在 buildnumber 插件上将继承的属性设置为 false 是个好主意,以便它只为父级运行一次。不幸的是,这样做会导致 changeSet 和 changeSetDate 属性对子模块不“可见”。
我的问题是:是否可以设置 buildnumber:hgchangeset 只运行一次,但它设置的属性对子模块可见?
我想或者我可以将内容写到属性文件中,然后让每个模块将其读回,但这对我来说似乎不是惯用的 Maven。
提前致谢,