マルチモジュールのMavenプロジェクトがあります。この例のために、2つのモジュールを考えます。
dataconsumer
モジュールにconsumerはdata依存関係としてモジュールがあります。
モジュールdataは一連のコアクラスを宣言します。src/testそれらを使用するテストがあります。これらのテストでは、時間のかかるオブジェクトを作成する必要があるため、これらのオブジェクトを作成するためのユーティリティメソッドをいくつか含むクラスがあります。このユーティリティクラス(SampleDataHelper)はsrc/test階層にあります。
また、consumerモジュールには、これらの長い間処理されたオブジェクトのいくつかを作成する必要があるいくつかのテストがあります。ツリーにあるテストSampleDataHelperでクラス(で定義data src/test)を使用したいconsumer src/test。残念ながら、たとえdataの依存性であるconsumer、consumer下に存在するクラスを参照してくださいすることはできませんdata src/test。
これに対抗するために、別のモジュール(data-test)を作成SampleDataHelperし、その下に移動するとしsrc/mainます。次にdata-test、のテストスコープ依存関係を含めますdata。残念ながら、これにより循環依存が発生します。をdata使用しますdata-testが、data-testも必要dataです。
私が作ってみた唯一の解決策は、場所にあるSampleDataHelper下data src/mainの下のtestパッケージと本当のアプリケーションコードが今までそれを呼び出していないことを願っています。
下に置かずにSampleDataHelperモジュール間でクラスを共有するにはどうすればよいですか?src/main
dataconsumer
mvn package、mvn installまたはを使用すると、シングルステップビルドで問題なく機能するはずですmvn deploy。簡単なメモ。私たちの大規模プロジェクトの1つには、junitのラッパーがTestBaseあり、src/mainこれは私が良いアイデアだとは思わない場所にあります。