2010-11-15 51 views
2

我有一個多模塊項目,其中父POM指定(在配置文件中)配置和使用maven-jarsigner插件簽署項目產生的罐子。如何確保在包裝階段簽署測試罐?

<profile> 
    <id>sign</id> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jarsigner-plugin</artifactId> 
       <version>1.2</version> 
       <executions> 
        <execution> 
        <id>sign-jars</id> 
        <goals> 
         <goal>sign</goal> 
        </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <keystore>/tmp/certificates.ks</keystore> 
        <alias>jarsign</alias> 
        <storepass>password</storepass> 
        <keypass>password</keypass> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</profile> 

一些項目的子模塊的額外使用maven-JAR-插件生產試驗瓶:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>test-jar</id> 
      <phase>package</phase> 
      <configuration> 
      </configuration> 
      <goals> 
       <goal>test-jar</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

我觀察到當簽名文件中啓動(例如,

  • 罐子:罐子
  • 的jarsigner:簽署
  • mvn -Psign install)Maven的按以下順序執行目標
  • 罐子:測試-JAR
  • 安裝:安裝

這將導致一個無符號的測試-JAR(無論是在target/和本地資源庫),然後使Java安全問題時,後續的項目嘗試使用那個測試罐。

有沒有辦法確保jar:jar和jar:test-jar在jarsigner之前執行:sign?

回答

1

移動你的test-jar執行到prepare-package階段,然後它會在jarsigner開始的時候到達。

或者,在與測試jar相同的POM中指定簽名配置文件。

我有類似的情況與程序集插件,如果程序集和jarsigner在同一個POM中,順序是好的,但如果jarsigner在父POM中,那麼順序是不好的(Maven 2.2.1) 。

+0

現在,我將簽名綁定到安裝階段。這聽起來像是這類問題在Maven中很常見,而且Maven開發人員社區是否真的認爲它是一個錯誤還不清楚......請參閱http://jira.codehaus.org/browse/MNG -2258和許多相關的相關問題。當然,它似乎沒有系統地解決: - / – 2010-11-28 04:50:45