1

我有一个多模块项目,它使用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。

提前致谢,

4

0 回答 0