5

テスト クラスを jar パッケージに含めるのに苦労していますが、実行していません。グーグルで調べた後、試してみましmvn package -DskipTestsたが、テストクラスがjarに追加されていません。

何か案は?

4

2 に答える 2

7

Mavenの規則に従っている場合、テストクラスはsrc/test/java. maven は、テスト ソース サブディレクトリの内容をアーティファクトにパッケージ化することはありません。

あなたには(少なくとも...)3つの選択肢があります:

「通常の」ソースでテストを行います

本当にパッケージ化する必要がある場合(なぜですか?)、src/main/java通常のソースとして扱われる場所にテスト クラスを配置し、コンパイルされたクラスをアーティファクト (通常は *.jar) にパッケージ化する必要があります。

これを行うと、あらゆる種類の問題に遭遇する可能性があります。たとえば、アーティファクトには、jar を使用する他のモジュールに干渉する可能性のある junit に対するコンパイル スコープの依存関係があります。

また、これを行う場合 (つまり、ビルドの一部としてテストを実行したい場合)、テストを実行する Maven プラグインを構成して、テスト クラスを認識する必要がある場合があります。たとえば、surefire および failsafe プラグインです。

テスト jar をビルドするように Maven jar プラグインを構成する

Maven jar プラグインのドキュメントを参照してください。「テスト クラスを含む jar を作成する方法」というタイトルのセクションもあります。そこにある指示により、テストが別の jar ファイルにパッケージ化されます (これはおそらくはるかに優れたアイデアです)。

アセンブリ プラグインを直接使用して、好きなように jar を作成します

yuoは、jar プラグインのデフォルトの実行を無効にし、代わりにアセンブリ プラグインの実行をパッケージ フェーズに追加して、jar を作成することができます。このためのアセンブリ記述子を記述する必要があります(上記のリンクほど複雑ではありません)。これにより、作成された jar に含まれるものを完全に制御できます。事前定義されたアセンブリの 1 つをコピーすることから始めるのが最善です

于 2013-05-04T14:47:05.767 に答える