【问题标题】:Maven Release without pushing to Nexus (aka maven central)Maven 发布而不推送到 Nexus(又名 Maven 中心)
【发布时间】:2020-02-01 06:55:30
【问题描述】:

我有一个 java 应用程序,我想遵循典型的 maven 发布周期,但我不想或不需要将应用程序推送到 Nexus(或 maven Central)。

当我跑步时

mvn release:prepare release:perform -Darguments="-DskipTests=true -Dmaven.javadoc.skip=true"

我在执行阶段收到一个错误,提示 pom.xml 文件缺少将构建的工件推送到 NEXUS(我们的内部 maven 存储库)所需的 <distributionManagement> 定义。

我正在使用 git,当我使用 git log 时,我可以看到我想要执行的所有其他步骤都已正确执行。

  • pom.xml 文件已从 1.2-SNAPSHOT 更改为 1.2,并执行了提交并创建了一个 git 标记来标记该版本。
  • 然后将 pom.xml 文件更改为 1.3-SNAPSHOT 以准备好用于后续开发的 git 分支。

所以...一切看起来都不错。 我要做的就是告诉 maven 不要尝试进行推送,以便命令完成而不会出错。 注意:有几个来自release:prepare 的文件被留下,一个是release.properties,但如果有必要我可以手动删除它。

我正在寻找的一些解决方案是:

  • 你不能那样做。
  • 只需取下release:perform,只运行release:prepare。我现在正在测试这个。
  • 添加标志 -DmavenReleasePluginDontPushToNexus=true。我正在编造这个,但想知道是否有旗帜。

我已经为上述所有问题寻找解决方案,但尚未找到答案。

寻找解决方案

Maven 发布插件

堆栈溢出搜索

我的猜测是以前有人问过并回答过,但到目前为止我找不到。

【问题讨论】:

  • 它看起来像只运行mvn release:prepare 做我想要的,然后我运行mvn release:clean 来删除在准备步骤中创建的文件。
  • @khmarbaise,我过去曾使用过-DdryRun。在这种情况下会有什么帮助?

标签: git maven nexus


【解决方案1】:

您可以通过更改安装目标来做到这一点,默认情况下它是部署:

<artifactId>maven-release-plugin</artifactId>
<configuration>
    <goals>install</goal>
</configuration>

另外,我认为你可以完全忽略 perform,因为发布版本和新开发版本的更新和提交都是通过准备步骤完成的: maven release plugin doc

【讨论】:

    【解决方案2】:

    我确认,release:prepare 阶段将:

    • 验证工作区中没有未提交的更改。
    • 提示用户输入所需的标记、发布和开发版本名称。
    • 修改发布信息并将其提交到 pom.xml 文件中。
    • 用新的标记名称标记整个项目源代码树。

    release:perform 中您可能需要的唯一缺少的步骤是将版本递增到下一个 SNAPSHOT,将发布版本转换为新快照,以便为下一批工作做准备。
    @ 987654321@.

    【讨论】:

      猜你喜欢
      • 2015-02-24
      • 1970-01-01
      • 2017-09-18
      • 2017-04-27
      • 2020-10-19
      • 1970-01-01
      • 2016-08-22
      • 2011-03-31
      • 1970-01-01
      相关资源
      最近更新 更多