这是一个非常愚蠢的问题,但我在配置POM上的maven-gpg-plugin
时无法正常工作。基本上我只希望它在我运行mvn deploy
时签署工件,以便在我运行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会抱怨工件未签名。如果我用deploy
阶段替换ìnstall
(应该工作正常)阶段,那么当我运行mvn deploy
时它会正确签署OSS Sonatype,但是即使我运行{ {1}}(我不希望这样)。我错过了什么?
答案 0 :(得分:3)
在部署之前,Maven lifecycle中没有名为pre-deploy
的阶段。它是在MNG-3869中提出的,但是它被关闭为“不会修复”,并在MNG-4330中也提到过。
目前,这是profile的工作。在以下配置中,maven-gpg-plugin
仅在激活deploy
配置文件时执行,例如在命令行中使用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>