maven - Maven 版本 :perform 期间丢失的属性

标签 maven teamcity maven-release-plugin system-properties

我正在从 TeamCity 运行 maven 构建并利用 build.vcs.number 将 Subversion 修订版写入我的 list 。在任何使用 Subversion 作为 VCS 的 Maven 构建中,TeamCity 添加

-Dbuild.vcs.number=1234

到 maven 命令行,其中 1234 是正在构建的分支中的最新版本。

然后在我的 pom.xml 中,我有
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
            </manifest>
            <manifestEntries>
                <build>${build.vcs.number}</build>
            </manifestEntries>
        </archive>
    </configuration>
</plugin>

这一切正常,直到我运行 Maven release:perform(也来自 TeamCity),此时 ${build.vcs.number} 变为 null,即使我可以在 TeamCity 构建日志中看到该属性是在命令中传入的线。

maven-release-plugin 文档暗示 Maven 在执行目标期间的某个时刻运行一个 fork 的进程 - 这就是我遇到问题的原因吗?

有没有办法可以确保这个特定的属性传递给那个 fork 的进程?

最佳答案

-Darguments=-Dbuild.vcs.number=1234

有一个用于发布的 fork 过程以确保它具有干净的可重现命令行,因此您需要指定要通过的内容。

理想情况下,您在 Pom 上配置发布插件以传递属性,但如果失败,则使用覆盖(除非有人在您的 Pom 中禁用了覆盖......他们会被卡住,直到您重新启用它。

注意:如果有多个属性或属性中有空格,请密切注意引用

关于maven - Maven 版本 :perform 期间丢失的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12397581/

相关文章:

java - 是否可以将 dependencyManagement 外包给一个文件(有本地 BOM)?

java - 用户需要安装maven才能执行uber jar吗?

java - 如何通过 Maven 3.3 运行注释处理?

automated-tests - 在TeamCity中,是否可以查看整个历史记录中失败(最常见)的测试报告?

git - 发布托管在单个 Git 存储库中的多模块 Maven 项目

git - gitlab 中的 Maven 发布

maven - 如何强制 sonatype nexus 3 为 maven 存储库重新创建 maven-metadata.xml?

teamcity - TeamCity 中复选框参数的默认值

scala - 使用 Maven 构建 SBT 项目

java - AT-Sign 版本 :perform 上的主机名