这是一个非常愚蠢的问题,但我在配置 maven-gpg-plugin
时遇到问题在我的 POM 上正常工作。基本上我希望它只在我运行 mvn deploy
时才对 Artifact 进行签名,以免在我运行 clean install
时询问我的密码(解密我的私钥) .任何在 github 上下载我的项目的人都应该能够运行 clean install
似乎是合理的。即使没有我的私钥。
好的,所以我想这样做:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>deploy</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
但这不起作用,因为 OSS Sonatype 会提示 Artifact 是 未签名 .如果我更换
deploy
(应该可以正常工作)阶段与 ìnstall
阶段,然后当我运行 mvn deploy
时它会为 OSS Sonatype 正确签名,但是即使我运行 mvn install
它也会运行(我不希望)。我错过了什么?
最佳答案
没有名为 pre-deploy
的阶段在 Maven lifecycle这将在部署之前执行。在MNG-3869中提出,但这被关闭为“不会修复”,并且还在 MNG-4330 中提到.
目前,这是一个 profile 的工作.在以下配置中,maven-gpg-plugin
只有在 deploy
时才会执行profile 被激活,例如在命令行上使用 mvn clean deploy -Pdeploy
.
这样,当您要部署时,您可以激活此配置文件。但是当用户运行时会出现 mvn clean install
,它不会被激活。
<profiles>
<profile>
<id>deploy</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
关于maven - maven-gpg-plugin 的正确执行阶段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36824032/