マルチモジュールのMavenプロジェクトがあります。この例のために、2つのモジュールを考えます。
data
consumer
モジュールに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
data
consumer
mvn package
、mvn install
またはを使用すると、シングルステップビルドで問題なく機能するはずですmvn deploy
。簡単なメモ。私たちの大規模プロジェクトの1つには、junitのラッパーがTestBase
あり、src/main
これは私が良いアイデアだとは思わない場所にあります。