テストなしのMavenパッケージ/インストール(テストをスキップ)


342

プロジェクトをパッケージ化しようとしています。ただし、パッケージ化を実行する前のテストを自動的に実行します。テストでは、データベースにコンテンツを挿入します。これは私が望んでいることではありません。アプリケーションのパッケージ化中にテストを実行しないようにする必要があります。テストなしでパッケージを実行する方法を知っている人はいますか?


13
ユニットテストは、初期化、テスト、検証、ティアダウンの4つのフェーズで構成されます。テストを調整し、それに応じてデータベースのティアダウン/クリーンアップを追加するか、テストを実行するために、jarファイルにパッケージ化されていない別のデータベースインスタンスを使用する必要があります。
Marc-Christian Schulze、2011

あなたのテストは「重い」ので、実行したくないようです。しかし、それは悪い習慣です。多分DBUnitとしてのいくつかのフレームワークはあなたを助けるかもしれませんか?または、テストの最後にデータベースの変更を元に戻すことができますか?
Mickael Marrache、2011年

回答:


572

でmavenを実行する

mvn package -Dmaven.test.skip=true 

1
私のコマンド-Dmaven.test.skip = true?
vks

10
MVNをEclipseから起動したことはありませんが、Mavenのターゲットとプロファイルを構成する[実行構成]ウィンドウに、[スキップテスト]チェックボックスがあります。多分それはトリックを行います。
Giorgos Dimtsas、2011

9
コンパイルと実行をスキップするドキュメントによると。-DskipTestsを使用して、実行をスキップすることができます。 この投稿では、各フラグを使用できるバージョンについての警告もいくつか示しています
JonnyRaa

1
おかげで、私は以前はそれを使用してそれをやって-DskipTestsいましたが、それはもはや機能しません、なぜか何か考えませんか?
2016

7
Maven SurefireプラグインおよびMaven Failsafeプラグインのドキュメントでは、設定skipTestsよりも設定の方が推奨されていることに注意してくださいmaven.test.skip
FilipBártek2016

172

テストケースの実行を無視する以下のコマンドを提供するだけで、

mvn package -DskipTests

4
私にはこれはうまくいきません。代わりに承認済みのソリューションを使用する必要がありました
Sebas

1
-DskipTests私が使用したとき私のために機能しませんでしたmvn clean install -DskipTests
Vishrant

1
テストを実行しないため、その部分的に問題はありませんが、テストクラスをコミル化します....
Antoniossss

フォロワーの場合、stackoverflow.com / -DskipTests-Dmaven.test.skip.exec=true -Dmaven.test.skip=true
a / 21933970/32453

47

コマンドライン引数を設定したくない場合は、このプラグイン構成をpomに追加できます。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
  </configuration>
</plugin>

3
この構成では、コマンドラインからテストを実行できなくなりました。
Emmanuel Bourg

1
この例では、以下の方向によって改善することができる@EmmanuelBourg maven.apache.org/plugins/maven-surefire-plugin/examples/...
smp7d


41

-Dmaven.test.skipは、Mavenがtest-jarアーティファクトを構築しないようにすることに注意してください。

テストをスキップしたいが、通常のビルドの使用に従ってアーティファクトを作成する場合:

-Dmaven.test.skip.exec

1
これは私が探していたasnwerで、うまく動作します。ありがとう。
Binita Bharati

どうしてそんなこと覚えてるの?「skipTests」のような単純で明白で覚えやすいエイリアスを作成してみませんか?
TheRealChx101

32

これをWindows Powershellで試行すると、次のエラーが発生します。

[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format...

これは、Powershellでは「-」が特別な意味を持ち、Mavenで問題を引き起こしているためです。

解決策は、そのようにバックティック( `)を前に付けることです。

mvn `-Dmaven.test.skip=true install 

リファレンス:http : //kuniganotas.wordpress.com/2011/08/12/invalid-task-test-skiptrue-you-must-specify-a-valid-lifecycle-phase/


1
私は同じ問題を抱えていましたが、これで解決しました。THX。
nsof 2015


18

maven.test.skipフラグをJVM引数として渡して、パッケージフェーズ(およびデフォルトのライフサイクルの以前のフェーズ)の実行時にテストの実行をスキップできます。

mvn package -Dmaven.test.skip=true

skipTestsフラグのみをmvn実行可能ファイルに渡すこともできます。この情報をPOMに含める場合は、テストmaven-surefire-pluginスキップするように設定できる新しいプロファイルを作成できます。




11

ここで、古くから受け入れられている質問に答えます。コマンドライン引数を常に渡さないようにしたい場合は、これをpom.xmlに追加できます。

  <properties>
    <skipTests>true</skipTests>
  </properties>

10

テストをスキップするために、-DskipTestsまたは-Dmaven.test.skip=true任意のmvnコマンドに追加できます。あなたの場合、それは以下のようになります:

mvn package -DskipTests

または

mvn package -Dmaven.test.skip=true

4

テストは常にパッケージの前に実行する必要があります[1]。テストをオフにする必要がある場合は、何か問題があります。つまり、間違った問題を解決しようとしているのです。あなたの問題が何であるかを理解し、その質問をしてください。データベース関連のようですね。

[1]ローカルで開発に使用するアーティファクトをすばやく生成する必要がある場合は、テストをスキップできますが、一般に、アーティファクトの作成は常にテスト実行が成功した後に行う必要があります。


同様の問題があります。アプリケーションにWebSocketが含まれています。mvn clean installを実行すると、無限のテストシリーズが発生します。強制的に閉じる前に、プロセスは3時間続いており、出力されるメッセージはWebsocketに関するものだけでした。私の問題をチェックして、私が間違っていることを確認できますか?stackoverflow.com/questions/54614739/...
georgeB

ルールには常に例外があります。そう思わないなら、あなたは間違っている。
ジェイサリバン



2

Mavenテストに感染しないMavenパッケージの場合:

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>

ありがとう、私はまさにこれを今日必要としました。
Sean McMillan

1

あなたは明らかに、それを間違った方法で行っています。テストは事前パッケージ化の重要な部分です。無視したりスキップしたりするのではなく、正しい方法で実行してください。データを挿入するデータベースを変更してみてください(test_dbなど)。設定に時間がかかる場合があります。また、このデータベースを永久に使用できるようにするには、テストの終わりまでにすべてのデータを削除する必要があります。JUnit4には、簡単に使用できる注釈があります。適切なメソッドには@ Before、@ After @Testアノテーションを使用します。あなたはいつかそれに費やす必要がありますが、それだけの価値があります!


9
テストを実行せずにパッケージ化するという質問と同様に、質問は完全に有効です。OPが「明らかに間違った方法で行っている」とは思わない。人やプロジェクトが異なればニーズも異なりますが、これらは通常、Mavenの聖書や、ソフトウェア開発の仕組みに関するさまざまな人々(自分のような)の信念と一致していません。私はあなたの答えはその侮辱的なアプローチなしでもっと高く評価されると思います。
Zero3 2015年

1

Intellijで、[表示]-> [ツールウィンドウ]-> [Mavenプロジェクト]を選択します。Lifecyleドロップダウンで、パッケージを右クリックし、[Create your-project [package]]を選択します...

package -Dmaven.test.skip=true -f pom.xmlコマンドラインフィールドに次の値を入力します。[適用]をクリックすると、作成したカスタムmavenコマンドとともに[実行構成]ドロップダウンメニューが表示されます。


なぜこれが反対投票されたのですか?私は自分のプロジェクトを構築したいが、テストをスキップするたびにこれを使用します
Patrick Tolentino



-1

ウィンドウ「Maven Project」のIntelliJ Ideaでそれを行うための最良かつ最も簡単な方法。テストボタンをクリックしないでください。よろしくお願いします。良い一日を過ごしてください :)


1
パッケージをクリックすると、テストが実行されます。これは、OPが回避しようとしていることです
Charlie
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.