maven-release-pluginでテストをスキップするにはどうすればよいですか?


177

テストをトリガーせずにmaven-release-pluginを実行するにはどうすればよいですか?

私が試してみました

-Dmaven.test.skip=true 

そして

-DskipTests 

そして

-DpreparationGoals=clean

...まだ機能しません。

はい、テストに合格しない場合はリリースしないでください。ただし、同僚に信頼できるテストを作成させることはできません。

回答:


406

-Darguments="-DskipTests" あなたが望むもの、またはpomでフォークされた実行を明示的に設定します


1
それは私のために機能します、ありがとう、そして+1が...これは何が必要ですか?
javamonkey79 2012年

5
リリースプロセスは新しいmavenプロセスを分岐し、tpical -DskipTestsはシステムプロパティとして渡されないため、ITが必要です。
Eddie

4
私があなたに投票できればいいのに2。私はこれを正しくするために何時間も費やしました...しかし、1。ドキュメントに何か見逃しましたか、またはmvnドキュメントに何か見当違いはありませんか?2. <skipTests>true</skipTests>会社でPOMを構成しました。それでも動作しませんでした。うまくいったのはあなたの解決策でした。
Pulak Agrawal

これを機能させるには、pomに特定の設定が必要ですか?
DenCowboy

42

-Darguments="..."は分岐したMavenプロセスに引数を渡しますが、ここでは2つの異なるスイッチが使用されていることを理解することが重要です。-DskipTests(あなたは、テスト・ジャータイプの依存関係を持っている場合、これは重要である)の力がどのテストを実行しないようにMavenのが、テストがまだコンパイルされています。-Dmaven.test.skip=trueMavenの力であっても任意のテスト-jarが生成されないことを意味し、テストをコンパイルできません。

したがって、を使用する必要がありますが-Darguments、使用のみを実行するテストをスキップするにはskipTests、使用のコンパイルを停止しますmaven.test.skip



3

選択肢が多すぎてリリースプラグインでのテストを回避およびスキップできない

  • 1つ目は、-Dargumentsを指定して、cliの引数としてリリースの目標またはフェーズに渡すことです。

例: mvn -X -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true" -P release-mode release:prepare

-2つ目は、ビルドのpom.xmlでこれらの引数を次のように実行することです。

<plugin>    
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.scm</groupId>
                        <artifactId>maven-scm-provider-gitexe</artifactId>
                        <version>1.9.4</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <skip>true</skip>
                    <skipTests>true</skipTests>
                    <preparationGoals>clean validate</preparationGoals>
                    <arguments>-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true</arguments>
                    <useReleaseProfile>false</useReleaseProfile>
                    <releaseProfiles>release-mode</releaseProfiles>
                    <tagNameFormat>TEST-@{project.version}</tagNameFormat>
                </configuration>
            </plugin>

2番目のメソッドが最初のメソッドをオーバーライドすることに注意してください。

最初に1つのアクションでリリースを準備することをお勧めします。次に、作業ディレクトリのrelease.propertiesファイルを編集してexec.additionalArguments、引数が存在する場合はプロパティを確認できます。次のようになりますexec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode

あなたが解放を実行した後。


2

単体テスト全体をスキップするには、引数を使用します

-Dmaven.test.skip = true

ユニットテストをスキップしたい場合はこれで解決します

mvn install -Dmaven.test.skip=true
mvn package -Dmaven.test.skip=true

または、maven-surefire-pluginでskipTestsを定義できます

pom.xml

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

2
この質問は特にMavenリリースプラグインに関するものなので、これらは使用されるMavenの目標ではありません。
Jaap '19

-2

文字通りテストのコンパイルまたは実行をトリガーするMavenプラグインはありません。1つ以上のプラグインの実行をトリガーするのは、Mavenライフサイクルのフェーズです。

したがって、テストを実行しなくても、単一のプラグイン目標を実行するだけで十分です。

mvn release:perform

またはプロジェクトのビルドとパッケージ化と組み合わせる:

mvn clean package release:perform
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.