【问题标题】:Properties lost during Maven release:performMaven 发布期间丢失的属性:执行
【发布时间】:2012-09-06 00:41:11
【问题描述】:

我正在从 TeamCity 运行 maven 构建,并利用 build.vcs.number 将 Subversion 修订写入我的清单。在任何使用 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} 变为空,即使我可以在 TeamCity 构建日志中看到此属性已传入在命令行中。

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

有没有办法可以确保这个特定的属性被传递到那个分叉的进程?

【问题讨论】:

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


    【解决方案1】:
    -Darguments=-Dbuild.vcs.number=1234
    

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

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

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

    【讨论】:

    • 啊,太棒了,正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 2013-03-11
    • 2011-01-20
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    相关资源
    最近更新 更多