gpt4 book ai didi

java - 为什么 Nexus 登台忽略 Maven 部署标志?

转载 作者:行者123 更新时间:2023-12-02 05:41:29 25 4
gpt4 key购买 nike

在父 POM 中,我启用了 Nexus 暂存(在分发管理中使用 Sonatype 存储库):

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
</configuration>
</plugin>
</plugins>
</pluginManagement>

<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

我一直使用这个父 POM 将项目部署到 Maven Central。

但是今天我有一个使用聚合 POM 的项目,我想将它及其聚合项目除了其中两个部署到 Maven Central。因此,我将以下内容放入我不想部署的两个子项目聚合子 POM 中:

<properties>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>

然后(仍然使用快照版本)我尝试部署到快照存储库作为测试:

mvn clean deploy

这是我得到的错误:

[ERROR] Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8:deploy (injected-nexus-deploy)
on project foo-bar: Failed to deploy artifacts: Could not transfer artifact com.example:foo-bar:war.asc:0.1.0-…
from/to ossrh (https://oss.sonatype.org/content/repositories/snapshots): Access denied to:
https://oss.sonatype.org/content/repositories/snapshots/com/example/foo-bar/0.1.0-SNAPSHOT/foo-bar-0.1.0-….war.asc -> [Help 1]

我不明白“访问被拒绝”部分。但更大的问题是,为什么 Nexus 会尝试部署我已将 maven.deploy.skip 设置为 falsefoo-bar 项目?

更新:这里似乎存在几个相互关联的问题。

首先,“访问被拒绝”部分是我的错:我忽略了与 Sonatype 协调来添加一个新的组 ID,该组 ID 具有发布到该项目的 Maven Central 的权限。

然而,之后,即使没有出现“访问被拒绝”的情况,Maven 仍然会部署所有项目,甚至是 maven.deploy.skipfalse 的项目。有人提到 maven.deploy.skip 适用于 maven-deploy-plugin 而不是 nexus-staging-maven-plugin。好的,那么剩下两个问题:

  • 我有另一个项目,其中我将聚合 POM 的 maven.deploy.skip 设置为 false,但随后将其设置回true 表示聚合的子 POM。 Maven 仅正确部署了聚合子 POM,而没有将聚合父 POM 部署到 Maven Central。那么,为什么如果在聚合父 POM 上禁用,maven.deploy.skip 似乎甚至适用于 nexus-staging-maven-plugin,但不适用于聚合子 POM聚甲醛?
  • 好吧,如果 maven.deploy.skip 不是答案,我该如何通过修改聚合子项来禁用聚合子 POM 的 Maven Central 部署聚甲醛? (我知道我可以从聚合 POM 的模块列表中删除子 POM,但这会导致部署不同的聚合父 POM。)

最佳答案

But the bigger question is why Nexus is trying to deploy my foo-bar project for which I had set maven.deploy.skip to false?

因为您说您不想跳过,所以 documentation表示该值默认为 false,因此将其设置为该值不会改变默认行为。

关于java - 为什么 Nexus 登台忽略 Maven 部署标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56135197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com