3

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 の質問には、希望する解決策が含まれていませんでした。

4

2 に答える 2

14

pom.xml で failPmdOnViolation プロパティを true として宣言し、ハードコードされた定数の代わりにプラグイン設定でそのプロパティを指定すると、コマンド ラインから の特別なプロファイルを有効にすることでオーバーライドできます。または、次のようなfailOnViolation プラグイン プロパティのデフォルト式を参照できます。mvn -Dpmd.failOnViolation=false install

于 2012-10-25T15:47:40.317 に答える
10

以下のコマンドを、使用するのと同じ方法で使用しskipTests=trueました。

mvn clean install -Dpmd.skip=true 

findbugs にも使用できます

-Dfindbugs.skip=true
于 2019-03-22T22:28:12.770 に答える