10

マルチモジュールの Maven + Spring プロジェクトがあります。一部のモジュールは、他のモジュールに依存しています。

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

サービス モジュール:

  • Spring レベルでは、persistenceコンテキストをインポートします
  • persistenceMaven レベルでは、モジュールに依存

このpersistenceモジュールは、永続性に関連するいくつかの設定を定義します: データソース、JPA、トランザクション...

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

servicesここで、モジュールの Maven テスト フェーズ中に、モジュールのテスト スコープ (推移的) 依存関係にアクセスしたいと考えていpersistenceます。

Mavenのマニュアル (表 3.1)によると、通常、テスト スコープの依存関係は推移的に利用できません。

マルチモジュールプロジェクトのコンテキストで何らかの方法でそれらを取得することは可能ですか?

そうでない場合、良い代替手段は何ですか? (親 pom でテストの依存関係を定義します ?... )

4

2 に答える 2

23

つまり、アーティファクトの一種であるテスト JARを、他のモジュール (この例では永続モジュール) によって依存関係として使用されるモジュールで生成することによって、それがどのように機能するかを正確に見つけました。

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

次に、このテスト jar を他のモジュール (この例ではservicesmodule ) のテスト スコープの依存関係として宣言します。

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

typeに設定されている と test に設定されtest-jarているを除いて、最初の依存関係と同じである 2 番目の依存関係に注意してください。scope

ここで、モジュールに記述されたテストは、モジュールserviceのテスト クラスpersistence(これは機能します) だけでなく、永続化モジュールのテスト スコープの依存関係にもアクセスできると想像できます。

ただし、そのように動作しないことが既知の問題 ( https://issues.apache.org/jira/browse/MNG-1378 ) です。2005 年からオープンしているので、近い将来に修正されるとは思えませんが、誰にもわかりません。

Si 両方のモジュールでテスト範囲の依存関係を複製するか、親 pom でそれらを定義するだけです...

于 2013-04-16T12:28:41.213 に答える
1

すべきですが、そうではありません。提供されたスコープでも発生します。ここに記録された問題: https://issues.apache.org/jira/browse/MNG-5255

于 2013-04-04T19:07:13.627 に答える