2015-07-20 91 views
0

我必須在編譯期間安裝一個自定義jar,我沒有選擇運行部署文件來將自定義jar上傳到中央連接。maven安裝生命週期不會執行驗證

自定義jar,沒有任何依賴關係,很簡單 這是我的pom文件。

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-install-plugin</artifactId> 
<version>2.5.2</version> 
<executions> 
    <execution> 
     <id>install-asjava</id> 
     <phase>validate</phase> 
     <goals> 
      <goal>install-file</goal> 
     </goals> 
     <configuration> 
      <groupId>com.ibm</groupId> 
      <artifactId>customjar1</artifactId> 
      <version>1.0.0</version> 
      <packaging>jar</packaging> 
      <file>${basedir}/lib/customjar1.jar</file> 
      <generatePom>true</generatePom> 
     </configuration> 
    </execution> 
    <execution> 
     <id>install-unijdbc</id> 
     <phase>validate</phase> 
     <goals> 
      <goal>install-file</goal> 
     </goals> 
     <configuration> 
      <groupId>com.ibm</groupId> 
      <artifactId>customjar2</artifactId> 
      <version>1.0.0</version> 
      <packaging>jar</packaging> 
      <file>${basedir}/lib/customjar2.jar</file> 
      <generatePom>true</generatePom> 
     </configuration> 
    </execution> 
</executions> 
</plugin> 

當我運行maven validate,這些自定義的罐子得到本地安裝的很好,但我想運行安裝,插件在安裝時,我改變階段安裝和它失敗,錯誤

[WARNING] The POM for com.ibm:customjar1:jar:1.0.0 is missing, no dependency information available 
[WARNING] The POM for com.ibm:customjar2:jar:1.0.0 is missing, no dependency information available 

我運行前必須明確運行validateinstall,我想解決這個問題。 Maven文檔說,在特定的某個階段之前的所有階段都是作爲執行週期的一部分執行的,但有些如何不適合我。

即使這個article說的是同樣的事情,您需要明確運行validate以確保maven install正常工作。

+0

選中此項:https://github.com/stephenc/non-maven-jar-maven-plugin除此之外,更好的做法是將這些工件上傳到資源庫管理器。 – khmarbaise

回答

1

這是已被封閉,不會解決錯誤(或不取決於依賴你的看法): https://issues.apache.org/jira/browse/MNG-5082

這裏是從錯誤的相關評論:

所有不屬於反應堆的依賴關係應該在構建啓動時可用,這是構建有效的buildPlan所必需的。所以,即使這用於Maven2,我認爲Maven3的方法更好,因爲Maven在啓動時無法檢測到哪些插件會影響buildPlan。我想關閉它,因爲不會修復。 在驗證過程中執行安裝文件意味着它將在每個構建過程中執行,並一遍又一遍地安裝相同的文件。這也表明這種方法不能有效。

你可以嘗試的是將你的項目變成一個多模塊項目。第一個模塊只包含maven-install-plugin配置 - 因此所有模塊都會將兩個自定義jar上傳到本地存儲庫。你的第二個模塊將取決於這個第一個模塊。當第二個模塊建立時,第一個模塊將上傳自定義jar,意思是他們應該可用。

相關問題