Mavenを使用してビルドされた Java プロジェクトがあるため、ビルド プロセスはプロジェクトのpom.xmlファイルで定義されます。私の開発チームは、さまざまなプラグインを使用してソース コードの品質をチェックしています。そのようなプラグインの 1 つはPMDを使用してコードをチェックします。プラグインは、プロジェクトで実行するたびに PMD が実行されるようmvn install
にし、違反がある場合はビルドに失敗します。pom.xml のプラグインは次のとおりです。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>2.7.1</version>
<configuration>
<targetJdk>1.6</targetJdk>
<linkXref>false</linkXref>
<failOnViolation>true</failOnViolation>
<failurePriority>1</failurePriority>
<rulesets>
<ruleset>config/pmd-rulesets.xml</ruleset>
</rulesets>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
私の問題は、特にタスクを開発している最中で、コードがビルドされるかどうかを確認したいが、自動ビルドおよびリリースのためにソース コードを SCM に送信する準備ができていない場合です。他の人に -- PMD 違反がビルドに失敗するのを抑制したい場合。そのような解決策の 1 つは、コードにアクセスして注釈を追加して警告を抑制することであることは知っていますが ( http://pmd.sourceforge.net/suppressing.html )、これらの違反を抑制するためだけにこの方法でソース コードを編集することは面倒でエラーが発生しやすい。他にできることは、pom を編集して PMD プラグインをコメントアウトすることです。しかし、繰り返しになりますが、アプリケーション全体に不可欠なファイルを変更するのは煩わしく、エラーが発生しやすいことに気付きました。
私のチームが望んでいる解決策は、何らかのフラグまたは引数をmvn
コマンドに渡すだけで、ビルド プロセスに PMD プラグインをスキップするようにすばやく指示できるようにすることです。たとえば、開発段階のある時点でインストールを実行していて、統合テストが失敗する可能性が高いことがわかっている場合 (Web サービスがアクティブでない可能性があるなど) -Dskip.integration.tests=true
、. mvn install
これは、テスト ファイルを編集したり、pom.xml を変更したりするよりも、はるかにクリーンなソリューションです。PMD違反をすばやくスキップできる同様の変数を探しています。ありがとう!
PS : 宿題をしました。次の 2 つの Stackoverflow の質問には、希望する解決策が含まれていませんでした。