2013-04-04 6 views
9

私はマルチモジュールMaven + Springプロジェクトを持っています。一部のモジュールは他のモジュールに依存します。マルチモジュールプロジェクトでは、Mavenモジュールは依存する別のモジュールの推移的なテストスコープの依存関係にアクセスできますか?

persistenceというモジュールに依存するservicesという名前のモジュールがあるとします。

サービスモジュール:春レベルで

  • は、Mavenのレベルでpersistenceコンテキスト
  • をインポートし、persistenceモジュールはに関連するいくつかconfiguratrionを定義persistenceモジュール

に依存します。 ..永続性:データソース、JPA、トランザクション...

これはいくつかの依存関係を持っていますアプリケーションがデプロイされると、DataSourceはコンテナ(Tomcat)で定義され、JNDI経由でアクセスされるため、テストスコープに限定されたDB(JDBCドライバ、DBCP、H2)をテストするために使用します。

今度は、servicesモジュールのMavenテスト段階で、persistenceモジュールのテストスコープ(推移的)依存関係にアクセスしたいと思います。

Maven manual (Table 3.1)は通常、テストスコープの依存関係は推移的に利用できないと言います。

マルチモジュールプロジェクトのコンテキストで何らかの形で入手できますか?

良い選択肢は何ですか? (親のPOMにテスト依存関係を定義する... ...)

答えて

20

永続モジュール:試験は、他のモジュールの依存関係をスコープとして、この例では、この試験瓶を宣言することにより、そして

<build> 
    <plugins> 

      <!-- Generate test jar too --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.4</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>test-jar</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

    </plugins> 
</build> 

servicesモジュール:

<!-- Services module --> 
<dependency> 
    <groupId>${project.groupId}</groupId> 
    <artifactId>services</artifactId> 
    <version>${project.version}</version> 
</dependency> 
<dependency> 
    <groupId>${project.groupId}</groupId> 
    <artifactId>services</artifactId> 
    <version>${project.version}</version> 
    <type>test-jar</type> 
    <scope>test</scope> 
</dependency> 

注第2の依存関係は、test-jarに設定されたtypeと、テストに設定されたscopeとを除いて、最初のものと同一です。

さて、あなたはserviceモジュールで書かれテストがpersistenceモジュールのテストクラスへのアクセス権を持っているだろうと想像(これはに動作します)だけでなく、テストに永続化モジュールの依存関係をスコープ。

ただし、そのように動作しないことが既知の問題(https://issues.apache.org/jira/browse/MNG-1378)です。それは2005年以来開いているので、私はそれが近い将来に修正されて表示されません...しかし、誰が知っている。

Siの私はいますが、指さ問題が関連するが、応答しない

+0

これはありがとうございます、なぜ私はクラスが例外を見つけられなかったのかと疑問に思っていました。( – PiersyP

+0

ありがとう!それは価値があるため、メインモジュールのアーティファクトの依存性を含める必要はなく、単に ' 'であるが、他の人の走行距離は異なる場合があります。 – CullenJ

1

になるはずですが、そうではありません。それは与えられた範囲でも起こります。問題はここに記録:私はそれが私たちの例では、他で依存関係として使用されているモジュールでは、成果物の種類であるテストJARを生成によりすなわち、動作するはずです正確にどのように見つけhttps://issues.apache.org/jira/browse/MNG-5255

+0

ありがとう...両方のモジュールのテストスコープの依存関係を複製し、または単に親ポンポンでそれらを定義する必要があります私の質問。実際には、テスト/提供された依存関係の推移的な依存関係が最終的なJARに含まれています。 –

+0

申し訳ありませんtl; dr :)テストスコープの過渡的な依存関係が、先日単体テストのクラスパスに入っていないので、私はあなたの質問を見たときに同じ問題であると仮定しました。 – tdrury

+0

他のモジュールが非テストスコープの依存関係としてこれらを宣言していますか?表示するには、有効なPOMを(Eclipseまたはヘルププラグインを介して)取得します。 – tdrury

関連する問題