将maven-release-plugin升级到2.5.2后未发布快照版本

时间:2017-11-03 08:54:38

标签: maven publish snapshot

快照版本未在快照存储库上发布,而是发布版本版本。

发布成功。没有错误。

只有更改是将发布插件从2.3.2升级到2.5.2

同样尝试了2.5.1和2.5.3但没有工作。

使用apache maven 3.5.0

步骤:

  • mvn clean install
  • mvn release:prepare
  • mvn release:执行

输出:在所有三个

中建立成功

不确定我是否可以附加实际日志

snippet pom.xml

<artifactId>maven-clean-plugin</artifactId>
                <version>2.5</version>
<artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
<artifactId>maven-overview-plugin</artifactId>
                <version>1.6</version>
 <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.3</version>
<artifactId>maven-dependency-plugin</artifactId>
                    <version>2.5</version>
<artifactId>maven-release-plugin</artifactId>
                    <version>2.3.2</version>
                    <configuration>
                        <scmCommentPrefix>: Release by maven </scmCommentPrefix>
                        <tagNameFormat>bcd-@{project.version}</tagNameFormat>
                        <arguments>-Denvironment=target</arguments>
                    </configuration>

<repository>
            <id>apache.snapshots</id>
            <url>https://repository.apache.org/content/repositories/snapshots</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>

<distributionManagement>
        <repository>
            <id>arm</id>
            <name>Internal release Repository</name>
            <url>url1</url>
        </repository>
        <snapshotRepository>
            <id>arm</id>
            <name>Internal Repository</name>
            <url>url2</url>
        </snapshotRepository>

2 个答案:

答案 0 :(得分:1)

您的问题是由影响2.3.2的Maven Release插件中的问题MRELEASE-812引起的,并且自2.5以来已解决。但是,插件实际上应该发布应用程序的发布版本,而不是Snapshot版本。当你说:

  

快照版本未发布在快照存储库上,而是发布   版本已发布。

使用Release插件时,不应在存储库上发布快照版本。实际上预计会发布发布版本。详细解释如下。

使用mvn release:prepare release:perform时会发生什么:

  1. release:prepare会将您的项目从版本x.y.z-SNAPSHOT更新为x.y.z(项目的“发布”版本)提交+将所有更改推送到您的Git存储库(或任何其他SCM)并创建一个名为bcd-x.y.z
  2. 的标记
  3. release:perform将从已标记的版本bcd-x.y.z版本中签出/提取并将其部署到您的存储库
  4. 发布版x.y.z现已部署在您的回购中。
  5. 实际上,当您使用版本2.5.2版本时,会发生这种情况,实际上是预期和正常的行为。

    以下是使用插件版本2.3.2时发生的情况:

    1. release:prepare将您的项目从版本xyz-SNAPSHOT更新为xyz,即项目的“发布”版本,然而由于MRELEASE-812,更改从未被推送到Git 。标记因此是使用项目的x.y.z-SNAPSHOT版本而不是正确的发布版本创建的,因为更新版本号的更改永远不会被推送。
    2. release:perform将检出实际包含bcd-x.y.z版本的*名称不正确的* x.y.z-SNAPSHOT,并将其作为SNAPSHOT部署在您的存储库中。
    3. 快照版x.y.z-SNAPSHOT现已在您的回购中提供。
    4. Maven从未显示任何错误,但这不是正确的行为。你真正的问题实际上是你之前使用的插件,你的构建现在有了预期的行为;)

      你能做什么:

      • 我建议您使用最新的插件版本保留实际配置。请记住,Maven Release Plugin用于发布应用的发布,而不是快照。
      • 如果要将SNAPSHOT版本发布到存储库,请在包含SNAPSHOT版本的修订版上使用mvn deploy,而不是创建版本。

      希望这会有所帮助。不要犹豫,询问细节我会更新我的答案。

答案 1 :(得分:0)

根据您使用的命令/目标,这是预期的:

  • mvn clean install将您的SNAPSHOT依赖项安装到您的本地存储库,但它不会将其部署在您的Maven存储库
  • mvn release:prepare更新您的POM以获取发布版本,并使用标记
  • 更新您的SCM
  • mvn release:perform实际上在存储库
  • 上部署了您的版本

您的SNAPSHOT nevers将部署在任何存储库中。为实现此目标,您应该在使用deploy:deploy目标之前运行release:*目标。例如:

mvn clean install deploy:deploy release:prepare release:perform 

相当于:

mvn clean deploy release:prepare release:perform 

请注意,应正确配置pom.xml和存储库以允许部署SNAPSHOT工件。