在 Maven 发布期间覆盖属性失败

Posted

技术标签:

【中文标题】在 Maven 发布期间覆盖属性失败【英文标题】:Overwrite property during maven release fails 【发布时间】:2014-12-01 07:21:26 【问题描述】:

我在属性部分添加了一个名为的新属性。 我在我的插件中使用了这个属性:

<plugin>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<executions>
    <execution>
        <phase>validate</phase>
        <id>...</id>
        <goals>
            <goal>read-dev</goal>
        </goals>
        <configuration>
            <files>
                <file>$dev-file</file>
            </files>
        </configuration>
    </execution>
    <execution>
        <phase>pre-clean</phase>
        <id>...</id>
        <goals>
            <goal>read-dev</goal>
        </goals>
        <configuration>
            <files>
                <file>$dev-file</file>
            </files>
        </configuration>
    </execution>
</executions>

我需要覆盖这个属性。

当我运行时它完美运行:mvn clean deploy -Ddev-file=tmp.dev

但是当我运行时它无法读取新的开发文件: mvn release:clean release:prepare release:perform -Ddev-file=tmp.dev

您是否知道可能导致此错误的原因? 或者我还应该检查什么?

【问题讨论】:

validate 阶段是 Default Lifecycle 的一部分,pre-clean 阶段是 Clean Lifecycle 的一部分,请参阅 Introduction to the Build Lifecycle .您不执行其中任何一个,但您调用了release plugin. 的目标。尽管其中一个与阶段之一具有相同的名称clean,但 phasegoal 完全不同。因此,您的 POM 的步骤不会被执行。 【参考方案1】:

将参数传递给发布插件是一种美:

mvn release:clean release:prepare release:perform -Darguments=-Ddev-file=tmp.dev

【讨论】:

以上是关于在 Maven 发布期间覆盖属性失败的主要内容,如果未能解决你的问题,请参考以下文章

使用 Maven,WebSocket 连接失败:WebSocket 握手期间出错:意外响应代码:404

Maven 中缺少工件错误

如果 JUnit 覆盖率低于某个阈值,如何使 Maven 构建失败

带有 Java 14 的 IntelliJ 2020.1 中的“记录”预览功能在 Maven“安装”期间因编译器错误而失败,但以其他方式运行

Maven 在构建期间没有运行 Jacoco

Maven 配置文件属性不会覆盖弹簧配置中的值