2012-08-17 27 views
6

継続的な統合ジョブ(Hudson)を2つのステップに分割したいと考えています。 (ビルドとレポートの実行時間が長くかかるため) 最初のジョブでは、マルチモジュールのmavenプロジェクトを "mvn package"で正常にビルドします。 次に、自分のワークスペースを別の場所にコピーし、目標 "site"と/またはfindbugs/checkstyle/pmdを指定してプロジェクトを再構築し、レポートを作成します。 しかし、これは動作しません! Maven は私のサブモジュールの依存関係を解決できません。 (しかし、すべてのJARファイルがターゲットフォルダで利用可能です。)マルチモジュールプロジェクトのMavenサイトが依存関係を解決できませんでした

例: 私の構造は次のようになります。

    • B
    • C
    • D

プロジェクトCは、依存プロジェクトBとして持つ

私は「MVNサイト」ですべてを構築する場合、それはプロジェクトAとBのためのすべてのレポートを生成します。しかし、プロジェクトCのエラーメッセージ "プロジェクトBの依存関係を解決できませんでした"で停止しました。 しかし、プロジェクトBはすでに "mvnパッケージ"でビルドされています。私。プロジェクトBのJARファイルがターゲットフォルダにあります。

"mvn install"なしでサブモジュールBからの依存関係を解決する方法はありますか? (私はしたいが、私はそれが同じコードベースを持つ他のジョブのために危険なことができ恐れる私のCIサーバー上でこれをしない。。)

更新08/20/12:ルートの

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:Bの

<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> 

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

+0

mvn cleanパッケージもエラーなく実行されますか? – khmarbaise

+0

はい。 "mvn clean package"はエラーなしで実行されます。 "mvn clean site"はありません。後でコードスニペットをアップロードします。 – user1606528

答えて

1

私は全く同じ "長い時間" の問題に直面していました。

私があなたのやり方で解決するための唯一の方法は、あなたが提案したように、確かにmvn installです。

しかし、問題は実際にあなたのワークスペースをコピーすることで異なる動作をしようとする方法です。 代わりに、CIがビルドとテストを必要なだけ頻繁に(各コミットまたは毎時)行いますが、1回だけレポートを作成するようにする必要があります(毎晩深夜など)。より速く連続したビルドができ、夜間に文書やレポートを修正することができます。

これは私たちが働く方法であり、それは十分です。私はジェンキンを使っていますが、私が考えるすべての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 

プロファイルを使用してさまざまな動作をトリガすることもできますが、このような基本的な使用には高度すぎます。

関連する問題