2

スコープテストとの依存関係を持つ親プロジェクトがあります

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-firefox-driver</artifactId>
        <version>2.31.0</version>
        <scope>test</scope>
    </dependency>

この親プロジェクトを子プロジェクトに依存関係として含めると、親プロジェクトを「mvn install」しました

    <dependency>
        <groupId>group</groupId>
        <artifactId>parentproject</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

selenium-firefox-driver利用できません。コンパイルスコープの依存関係が利用可能です。

どうすれば利用できるようになりますか? 親プロジェクトでも子プロジェクトでもスコープを変更しません。実行時に親のいくつかのクラスが必要なため

4

3 に答える 3

4

Charlee Chitsuk の回答で概説されているように、スコープ (子プロジェクトでコンパイル) は、含まれるプロジェクトのテスト依存関係を省略します。

クリーンな解決策は、親プロジェクトの懸念を2 つの別個のプロジェクトに分けることです。

  • parent-test: このプロジェクトには、コンパイルスコープselenium-firefox-driverを持つテストの依存関係 (例: ) が含まれます。さらに、このプロジェクトには、一般的なテスト リソース (JUnit 基本クラスなど) がすべて含まれています。src/main/java
  • parent-business: このプロジェクトには、親プロジェクトのビジネス機能のみが含まれています。parent-testここにtestスコープを含めます。

子プロジェクトにparent-testwith scope testも含めることができるようになり、適切なスコープでそのリソースにアクセスできるようになりました。

このセットアップにより、明確なスコープで明確なプロジェクト構造が提供され、言及したような問題が回避されます。はい、プロジェクトが追加されたため、少し複雑ですが、よりクリーンになっています。

于 2013-03-27T10:54:28.233 に答える
3

親プロジェクトを子 pom の依存関係として含める代わりに、親プロジェクトを子 pom として作成する必要がparentあります。

<parent>
   <groupId>group</groupId>
   <artifactId>parentproject</artifactId>
   <version>0.0.1-SNAPSHOT</version>
</parent>

それ以外とは言えませんparent project

于 2013-03-27T10:38:42.673 に答える
1

Dependency Scopecompile、何も指定されていない場合に使用されるデフォルトのスコープであることを示しています。さまざまな方法で推移的な依存関係に影響を与えます。依存関係がスコープの場合、概要によりcompile、推移的なtestスコープは省略されます。詳細については、Maven: The Complete Reference: Project Dependenciesを参照してください。

于 2013-03-27T10:24:18.510 に答える