2012-08-17 62 views
6

我想將持續集成作業(Hudson)分成兩個步驟。 (因爲一起構建和報告的運行時間太長。) 在第一份工作中,我成功地使用「mvn package」構建了我的多模塊maven項目。 然後我將我的工作區複製到另一個位置,並嘗試再次使用目標「site」和/或findbugs/checkstyle/pmd來創建項目來創建項目。 但是這不起作用! Maven 無法解析我的子模塊的依賴關係。 (但所有JAR文件是在其目標文件夾中可用。)多模塊項目上的Maven站點無法解析依賴關係

實施例: 我的結構是這樣的:

    • Ç
    • d

項目C具有作爲依賴項目B.

當我建立與「MVN網站」的一切,它生成項目A和B的所有報告。但在項目C中停止,並顯示錯誤消息「無法解析項目B的依賴關係」。 但是項目B已經建立了「mvn包」。即我可以在目標文件夾中找到項目B的JAR文件。

是否有任何方法來解決從子模塊B的依賴關係沒有「mvn安裝」? (我不想做我的CI服務器上我擔心這可能是危險與相同的代碼庫的其他工作。)

更新12年8月20日:

根POM文件夾:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <name>Foo</name> 
    <groupId>foo</groupId> 
    <artifactId>bar</artifactId> 
    <version>1.0</version> 
    <packaging>pom</packaging> 
    <modules> 
     <module>parent</module> 
    </modules> 
</project> 

父POM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <name>Foo</name> 
    <groupId>foo</groupId> 
    <artifactId>parent</artifactId> 
    <version>1.0</version> 
    <packaging>pom</packaging> 
    <modules> 
     <module>../bar-a</module> 
     <module>../bar-b</module> 
     <module>../bar-c</module> 
     <module>../bar-d</module> 
    </modules> 
    [...] 
    <reporting> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>findbugs-maven-plugin</artifactId> 
       <version>2.5.1</version> 
       [...] 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-pmd-plugin</artifactId> 
       <version>2.7.1</version> 
       [...] 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-checkstyle-plugin</artifactId> 
       <version>2.9.1</version>    
       [...] 
      </plugin> 
     </plugins> 
    </reporting> 
</project> 

B的POM :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>foo</groupId> 
     <artifactId>parent</artifactId> 
     <version>1.0</version> 
     <relativePath>../parent</relativePath> 
    </parent> 
    <name>Bar B</name> 
    <artifactId>bar-b</artifactId> 
    <version>1.0</version> 
    <packaging>jar</packaging> 
    [...] 
</project> 

的C POM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>foo</groupId> 
     <artifactId>parent</artifactId> 
     <version>1.0</version> 
     <relativePath>../parent</relativePath> 
    </parent> 
    <name>Bar C</name> 
    <artifactId>bar-c</artifactId> 
    <packaging>jar</packaging> 
    [...] 
    <dependencies> 
     <dependency> 
      <groupId>foo</groupId> 
      <artifactId>bar-b</artifactId> 
      <version>1.0</version> 
     </dependency> 
    </dependencies> 
    [...] 
</project> 
+0

沒有pom的很難猜測......但它聽起來像一個依賴/模塊沒有正確配置。 mvn清潔網站應該運行沒有錯誤。 – khmarbaise 2012-08-17 14:41:20

+0

難道一個MVN清潔包無差錯運行呢? – khmarbaise 2012-08-17 20:58:14

+0

是的。 「mvn clean package」運行無誤。 「mvn清潔網站」不是。稍後我會上傳代碼段。 – user1606528 2012-08-20 06:59:04

回答

1

我面臨完全一樣的 「長時間」 的問題。

解決它與您的工作方式的唯一方法是真正的mvn安裝,如你所建議的那樣。

但問題的確是你嘗試複製你的工作區有不同的行爲的方式。 你應該改爲考慮CI將按照你想要的(每次提交或每個小時)頻繁地進行構建和測試,但只需進行一次報告(例如每個午夜)。你將能夠更快地連續編譯,並在夜晚正確地編寫文檔和報告。

這是我們的工作方式,這是相當足夠。我們使用詹金斯,但你可以觸發它與每一個CI軟我認爲)!

@hourly : mvn clean package (or install) --> from 1 to 5 minutes to run all test on all modules 
@daily : mvn clean install site --> from 15 to 35 minutes to run all test on all modules + doc + reports + PDF reports 

您還可以使用配置文件來觸發不同的行爲,但這對於這樣的基本使用來說太複雜了。

相關問題