java - 为什么 Nexus 登台忽略 Maven 部署标志?
问题描述
在父 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 中心,但其中两个项目除外。因此,我将以下内容放在我不想部署的两个子项目聚合子 POM中:
<properties>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>
然后(仍然使用 SNAPSHOT 版本)我尝试部署到快照存储库作为测试:
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 会尝试部署我设定的foo-bar
项目?maven.deploy.skip
false
更新:这里似乎有几个相互关联的问题。
首先,“访问被拒绝”部分是我的错:我忽略了与 Sonatype 协调以添加一个新的组 ID,该组 ID 有权发布到该项目的 Maven Central。
然而,之后,即使没有“拒绝访问”,Maven 仍然会部署所有项目,即使是带有maven.deploy.skip
to的项目false
。有人提到这maven.deploy.skip
是针对maven-deploy-plugin
而不是nexus-staging-maven-plugin
. 好的,那么,剩下两个问题:
- 我有另一个项目,我在其中设置为
maven.deploy.skip
聚合POM,但随后将其设置回聚合子 POM。Maven 仅正确部署了聚合的子 POM,并没有将聚合的父 POM 部署到 Maven Central。那么为什么即使对于聚合父 POM 上的 if disabled 似乎也有效,但不适用于聚合子 POM?false
true
maven.deploy.skip
nexus-staging-maven-plugin
- 好的,那么如果
maven.deploy.skip
不是答案,我如何通过修改聚合子 POM 来禁用到 Maven Central 的聚合子 POM 部署?(我知道我可以从聚合 POM 的模块列表中删除子 POM,但这会导致部署不同的聚合父 POM。)
解决方案
但更大的问题是为什么 Nexus 试图部署我将 maven.deploy.skip 设置为 false 的 foo-bar 项目?
因为您说您不想跳过,所以文档说该值是false
默认值,因此将其设置为该值不会改变默认行为的任何内容。
推荐阅读
- tensorflow - 是否可以将已经训练好的 Keras 部署到 Sagemaker?
- javascript - 如何让两个变量始终等于一个恒定比率?
- javascript - 关闭firebase监听器的正确方法?
- javascript - React-Apollo:对变量列表进行查询调用
- php - 如何在遗留 PHP 页面中集成 Symfony 控制器操作?
- javascript - Fancybox3 高度默认为 9999px
- r - 从 R 中的光栅进程中定位临时文件:缺少 140 Gb
- excel - VBA插入公式以将单元格的值添加到另一个
- html - 在我的网页中,一些字符在上传到主机时发生了变化,但在本地 Asp.net MVC 中很好
- javascript - javascript:在重复时拆分多维数组