2016-04-24 50 views
1

这是一个非常愚蠢的问题,但我在配置我的POM上的maven-gpg-plugin以正常工作时遇到问题。基本上我只希望它在我运行mvn deploy时签署工件,以便在运行clean install时不要求我的密码(解密我的私钥)。在github上下载我的项目的任何人都应该能够运行clean install,即使没有我的私钥也是合理的。maven-gpg-plugin的正确执行阶段?

好了,所以我想这样做的:

<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的会抱怨伪影没有签署。如果我用ìnstall阶段替换deploy(它应该正常工作)阶段,那么当我运行mvn deploy时,它会正确标记OSS Sonatype,但是即使运行mvn install(我不希望它),它也会运行。我错过了什么?

+0

所以你想签署已部署的工件,但不是已安装的工件。为什么?部署不需要安装的东西有点奇怪。甚至不确定它会实际工作。 – Tunaki

+0

看看这篇文章http://blog.sonatype.com/2010/01/how-to-generate-pgp-signatures-with-maven/ – Tunaki

+0

@Tunaki我想要的是能够从我的电脑部署使用'mvn deploy'来实现中央管理,而且任何人都可以从任何计算机上运行'mvn clean install',即使他们没有我的凭证。只有在运行部署命令时,我才看到没有理由在运行安装时签署工件。 –

回答

1

在部署之前将执行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>