Maven 发布而不推送到 Nexus(aka maven central)

问题描述 投票:0回答:3

我有一个 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 发布插件

堆栈溢出搜索

我的猜测是这已经被问过并回答过但到目前为止我找不到它。

git maven nexus
3个回答
3
投票

您可以通过更改安装目标来执行此操作,默认情况下它是部署:

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

另外,我认为你完全可以忽略执行,因为发布版本和新开发版本的更新和提交都是通过准备步骤完成的: maven 发布插件文档


1
投票

我确认,

release:prepare
阶段将:

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

您可能需要从

release:perform
中唯一缺少的步骤是将版本增量到下一个 SNAPSHOT,将发布版本转换为新快照,以便为下一批工作做准备。
需要使用
version:set
.


0
投票

我有类似的需求,但我想在我的本地存储库中制作一个已发布的副本(

~/.m2/repository/
)。

首先,我摆脱了运行

release:perform
目标,只留下
mvn release:clean release:prepare
作为命令。它将版本增加到稳定版本和下一个开发版本,执行所有 git 提交和推送。

然后我在

<projectVersionPolicyId>SemVerVersionPolicy</projectVersionPolicyId>
中添加:
configuration
到插件的
pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
        <preparationGoals>clean install</preparationGoals>
        […]
    </configuration>
</plugin>

以便在执行发布时,在准备好新的稳定版本后,将此版本保存到本地 Maven 存储库。

此参数在插件文档页面中提到:

© www.soinside.com 2019 - 2024. All rights reserved.