我已经将一个多模块项目作为 a 上传到中央,bundle.jar
并且出现了这个问题:
所以 Nexus 找不到pom.asc
.
4 回答
根据您的评论,执行以下步骤后出现此 Nexus 错误:
mvn release:prepare release:perform
mvn clean repository:bundle-create gpg:sign
,它创建*-0.9.12.pom.asc
文件和*-bundle.jar
该错误很可能与上述步骤有关,这可能不是在这种情况下应用的正确顺序,因为:
- 该
maven-repository-plugin
插件及其create-bundle
目标将为 Maven 项目创建上传包。但是请注意,生成的*-bundle.jar
文件不会附加到 Maven 构建(根据其来源),而只是在项目target
文件夹中生成文件 maven-gpg-plugin
它的目标sign
是使用 GnuPG 签署项目工件、POM 和附加工件以进行部署clean
您在执行的第二步中调用阶段,这基本上意味着target
在操作后删除文件夹的内容release:perform
。
像这样:
- 您应该验证
bundle
jar 的内容(由于clean
调用) - 您实际上没有签署 jar 文件(由调用清理
clean
)或捆绑包(如上面的描述),尽管提到的错误涉及 POM 文件而不是 jar 文件 - 您正在
gpg:sign
从命令行执行,尽管官方示例说明:
目前,这并不容易实现。gpg 在 gpg 运行时对附加到构建的工件进行签名。但是,我们希望将 gpg “注入”到阶段中。可能
的工作 是:mvn verify gpg:sign install:install deploy:deploy
但是,如果在验证阶段之后为阶段配置了其他插件,它们将不会运行。
(注:粗体字是我的)。
因此,我将审查部署过程并遵循签署项目工件的标准程序。
对我来说,丢失的*.asc
文件会导致签名错误。我已经安装了 gpg 密钥并将其发送到 ssh 服务器。
根据Deploying to OSSRH with Apache Maven-Introduction,我们需要添加插件nexus-staging-maven-plugin
和nexus-staging-maven-plugin
. 然后,当你运行时maven clean deploy
,它会将包释放到repo.maven.apache.org(半小时内)。
这是一个pom.xml
样本
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
...
<build>
<plugins>
...
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>
https://oss.sonatype.org/service/local/staging/deploy/maven2/
</url>
</repository>
</distributionManagement>
</project>
行家settings.xml
<!--maven connect nexus need user and password-->
<settings>
<servers>
<server>
<id>ossrh</id>
<username></username>
<password></password>
</server>
</servers>
<profiles>
<profile>
<id>ossrh</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<gpg.passphrase>gpg.passphrase
</gpg.passphrase>
</properties>
</profile>
</profiles>
</settings>
除了存储库管理器中的活动选项卡之外,您还应该能够浏览到内容选项卡。检查一下,看看在你的 GAV 坐标的文件夹中你找到了所有的文件。暂存规则似乎没有找到该文件。它可能不存在(在存储库管理器上..不是您的本地文件系统!)
请查看我们的文档以获取有关如何使用 Maven 设置这一切的更多提示,包括演示视频和完整工作的示例项目。
此外,如果您遇到困难,请直接与我联系或在我们的 OSSRH jira 项目中提出问题,以便我调查具体部署。
我认为这个消息是错误的。这.asc
不是必需的,我会发布一个错误并看看会发生什么。