【问题标题】:Maven release not calling resources:resources pluginMaven 版本不调用资源:资源插件
【发布时间】:2018-10-15 21:21:48
【问题描述】:

我正在尝试部署一个 maven 项目并通过在 TeamCity 上执行 maven 发布插件来升级版本。我能够成功地做到这一点 - 但是,resources:resources 插件不再执行。或者更准确地说,它被执行但没有进行预期的更改。但是,当我运行 Maven 包或安装时,它可以工作。不知道我错过了什么。任何帮助将不胜感激。

下面是我的代码 父pom

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <delimiters>
                        <delimiter>@</delimiter>
                    </delimiters>
                    <useDefaultDelimiters>false</useDefaultDelimiters>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <tagNameFormat>v@{project.version}</tagNameFormat>
                    <autoVersionSubmodules>true</autoVersionSubmodules>
                    <releaseProfiles>releases</releaseProfiles>
                    <localCheckout>true</localCheckout>
                    <arguments>-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -DCONTINUOUS_BUILD_ID=%build.counter% -DGIT_COMMIT=%build.vcs.number% -DGIT_BRANCH=%vcsroot.branch%</arguments>
                </configuration>
                <executions>
                    <execution>
                        <id>prepare</id>
                        <goals>
                            <goal>prepare</goal>
                        </goals>
                        <configuration>
                            <pushChanges>false</pushChanges>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

儿童绒球

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
                <delimiters>
                    <delimiter>@</delimiter>
                </delimiters>
                <useDefaultDelimiters>false</useDefaultDelimiters>
            </configuration>
        </plugin>
    </plugins>
    <resources>
        <resource>
            <!-- Adds ${buildNumber} to buildNumber.properties -->
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>application_local.properties</exclude>
            </excludes>
        </resource>
    </resources>
</build>

我运行以下命令:

mvn -B -e initialize release:branch release:clean release:prepare release:stage -DCONTINUOUS_BUILD_ID=%build.counter% -DGIT_COMMIT=%build.vcs.number% -DGIT_BRANCH=%vcsroot.branch%...

我在 src/main/resources 文件夹中的子项目中有一个名为 application-deployed.properties 的文件,其中包含我想要更改的内容。

# build information by team city
child.propject.buildNumber=@CONTINUOUS_BUILD_ID@
child.propject.buildVersion=@GIT_COMMIT@
child.propject.buildBranch=@GIT_BRANCH@

非常感谢任何帮助

【问题讨论】:

    标签: java maven teamcity maven-release-plugin maven-resources-plugin


    【解决方案1】:

    maven-resources-plugin 无权访问您在命令行中传递的参数。原因是deploy 目标(其中包括resources:resources 等)由maven-release-plugin 在单独的Maven 执行中调用。

    为了克服这个限制,maven-release-plugin 的目标接受 arguments 参数,该参数可用于将参数传递给上述单独的 Maven 执行。尝试通过以下方式修改命令行:

    mvn -B -e initialize release:branch release:clean release:prepare release:stage -Darguments="-DCONTINUOUS_BUILD_ID=%build.counter% -DGIT_COMMIT=%build.vcs.number% -DGIT_BRANCH=%vcsroot.branch%"

    【讨论】:

    • 不幸的是这不起作用 - 我尝试了双引号和单引号。可能是因为我正在执行来自 TeamCity 的命令
    • @sometimes24,我没有注意到您的 maven-release-plugin 在配置中已经有 &lt;arguments&gt; 标记。在这种情况下,插件会忽略通过命令行传递的参数,而是使用标签的内容。
    【解决方案2】:

    我能够通过将以下内容添加到父 pom 中的 maven 发布插件来解决该问题

    <arguments>-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true -DCONTINUOUS_BUILD_ID=${CONTINUOUS_BUILD_ID} -DGIT_COMMIT=${GIT_COMMIT} -DGIT_BRANCH=${GIT_BRANCH}</arguments>
    

    然后调用我的初始命令

    mvn -B -e initialize release:branch release:clean release:prepare release:stage -DCONTINUOUS_BUILD_ID=%build.counter% -DGIT_COMMIT=%build.vcs.number% -DGIT_BRANCH=%vcsroot.branch%...
    

    【讨论】:

      猜你喜欢
      • 2012-02-02
      • 1970-01-01
      • 2019-09-16
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 2023-04-03
      相关资源
      最近更新 更多