[解決済み] 複数モジュールのMavenプロジェクトで、モジュール間でsrc/testクラスを共有する
質問
マルチモジュールの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 プロジェクトに共有したいすべてのテスト コードが含まれていることを確認し、テスト JAR を生成するように POM を構成します。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
Consumer プロジェクトは、通常の Data JAR アーティファクトと、 追加の
test-jar
アーティファクトの両方に依存することになります。
<dependency>
<groupId>com.foo</groupId>
<artifactId>data</artifactId>
<version>1.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
私は何度もこの方法を使い、うまくいっています。
関連
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
プロジェクトの依存関係を解決できなかった 解決
-
自動配線された依存性のインジェクションに失敗しました。
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)
-
[解決済み] IntelliJのインスペクションで「シンボルを解決できない」と表示されたが、コードはコンパイルされる
-
[解決済み] 抽象クラスをユニットテストする方法:スタブで拡張する?
-
[解決済み] IntelliJ - Javaプロジェクト/モジュールをMavenプロジェクト/モジュールに変換する
-
[解決済み] 複数モジュールのMavenプロジェクトでモジュールのバージョン番号を更新する
-
[解決済み】Maven モジュール + 特定の単一モジュールのビルド
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
myeclipseでコンパイルするとAntエラーが発生する javaの例外が発生しました。
-
eclipse アクセス制限です。タイプ 'xxx' は API ではありません(必須ライブラリ '' の制限)。
-
をインスタンス化することができません。
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
Eclipseでプロジェクトエクスプローラービューとパッケージエクスプローラービューを使う
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。