这是一个非常愚蠢的问题,但是我无法maven-gpg-plugin
在 POM 上配置以正常工作。基本上,我希望它仅在我运行时才对工件进行签名mvn deploy
,以免在运行clean install
. clean install
即使没有我的私钥,任何在 github 上下载我的项目的人都应该能够运行,这似乎是合理的。
好的,所以我想这样做:
<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>
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为 OSS Sonatype 会抱怨工件未签名。如果我用deploy
阶段替换(应该可以正常工作)阶段ìnstall
,那么它会在我运行时为 OSS Sonatype 正确签名mvn deploy
,但是即使在我运行时它也会运行mvn install
(我不希望)。我错过了什么?
在部署之前执行pre-deploy
的Maven 生命周期中没有调用阶段。它是在MNG-3869中提出的,但这被关闭为“不会修复”,并且也在MNG-4330 中提到。
目前,这是一个profile的工作。在下面的配置中,maven-gpg-plugin
只有在deploy
配置文件被激活时才会执行,例如在命令行中使用mvn clean deploy -Pdeploy
.
这样,当您要部署时,您可以激活此配置文件。但是当用户运行 a 时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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
246 次 |
最近记录: |