2016-04-24 85 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>