1

我正在将一些 Maven 项目从 Perforce 迁移到 git。使用 Perforce,这些项目配置了build.numberMaven 属性,作为构建过程的一部分作为 JVM arg 传入。使用 git,我正在探索基于 git repo 元数据设置属性的jgit-buildnumber 插件。

该插件运行良好,但即使我在 Maven 生命周期的早期运行它(验证或初始化),这也会发生在生成 Reactor 构建计划之后。这是一个问题,因为项目使用exec-maven-pluginmaven-antrun-plugin. 这些插件的构建计划似乎在计划构建时拍摄了所有 Maven 属性的快照,例如来自 Reactor 构建计划的调试输出中的一个片段:

[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal:          org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (RPMbuilderScript)
[DEBUG] Style:         Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <basedir default-value="${basedir}"/>
  <classpathScope default-value="runtime">${exec.classpathScope}</classpathScope>
  <commandlineArgs>product=jas_etl
                        dir=/Users/dev/project
                        team=sanctuary
                        version=${git.buildnumber}
                        artifact=/Users/dev/project/target/project-${git.buildnumber}.zip
                        </commandlineArgs>
  <executable>../parent/devops_scripts/mavenRpmBuilder.sh</executable>
  <longClasspath default-value="false">${exec.longClasspath}</longClasspath>
  <outputFile>${exec.outputFile}</outputFile>
  <project default-value="${project}"/>
  <session default-value="${session}"/>
  <skip default-value="false">true</skip>
  <sourceRoot>${sourceRoot}</sourceRoot>
  <testSourceRoot>${testSourceRoot}</testSourceRoot>
  <workingDirectory>${exec.workingdir}</workingDirectory>
</configuration>

git.buildnumber由 jgit-buildnumber 插件设置为初始化阶段的一部分,但为时已晚,无法影响 exec 插件构建计划中的引用。

有没有办法在生成构建计划之前运行 jgit-buildnumber 插件?或者,有没有办法将 Ant 和 exec 插件配置为仅在它们执行的阶段开始时读取属性值,而不是在生成构建计划时读取?

4

0 回答 0