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
阶段,这基本上意味着在release:perform
操作后删除target
文件夹的内容。clean
调用,您应该验证 bundle
jar 的内容clean
调用清理的 jar 文件或 bundle(如上所述),尽管提到的错误涉及 POM 文件而不是 jar 文件gpg:sign
:因此,我将审查部署流程并遵循标准程序来签署项目工件。Currently this is not easily accomplished. gpg signs the artifacts attached to the build at the point that gpg runs. However, we want to "inject" the gpg into the phases.
What MIGHT work is:mvn verify gpg:sign install:install deploy:deploy
However, if there are other plugins configured for phases after the verify phase, they will not be run.
(注意:粗体为我所加)。
bundle-create
之前清除目标,因为我不喜欢在发布中有快照构建(正如您可能注意到的版本是0.9.12
而不是0.9.12-SNAPSHOT
)。如果jar没有签名,错误消息将不同。签名过程与标准程序没有区别,我只是把它作为目标,而你的标准程序则将其作为pom.xml
的一部分。 - Grim*.asc
文件导致了签名错误。我已经安装了gpg密钥并将其发送到ssh服务器。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>
<!--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>
我认为这个信息是错误的。不需要.asc
,我会发布一个错误报告并观察情况。
mvn release:prepare release:perform
部署到项目主页,其中在主 POM 中设置了<distributionManagement>
。在将文件部署到项目主页后,我会调用mvn clean repository:bundle-create gpg:sign
命令来创建*-0.9.12.pom.asc
和*-bundle.jar
文件,并将 asc 文件复制到项目主页上指定的目录(第一个截图中指明)并上传*-bundle.jar
到 central-nexus。 - Grim