8

maven-checkstyle-plugin がすべてのプロジェクトで同じ構成ファイルを使用するようにしようとしています。

いくつかの方法を試しましたが、どれも効果的ではありませんでした。

動作しているように見える唯一のことは、構成ファイルを maven-project のルートに配置し、その名前を pom.xml の configLocation 構成パラメーターとして使用することです。

                <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.10</version>

                <configuration>
                    <configLocation>my-checkstyle-checker.xml</configLocation>
                </configuration>
            </plugin>

絶対ディスクパスを指定しようとしましたが、うまくいかないようです。(最終目標がジェンキンスにチェックスタイルを実行させることであると考えると、ファイルが指定された場所のジェンキンスサーバー上にある場合、これは有効なオプションのように見えました)

また、xml ファイルのみを含む別の jar ファイルを作成し、これを依存関係として使用しようとしました。(これにより、構成が 1 つの場所に集中化され、プロジェクト固有の逸脱が防止されます。) 残念ながら、これも機能しません。

[エラー] プロジェクト jenkins-sandbox-project で目標 org.apache.maven.plugins:maven-checkstyle-plugin:2.10:checkstyle (default-cli) を実行できませんでした: Checkstyle レポート生成でエラーが発生しました。checkstyle の実行中に失敗しました: my-checkstyle-checker.xml の場所に構成ファイルが見つかりません: リソース 'my-checkstyle-checker.xml' が見つかりませんでした。→【ヘルプ1】

私がここで間違っていることを教えてくれる人はいますか?

maven コマンドが開始された場所と同じ場所にあるファイルしか認識していないようです。

  • maven-checkstyle-plugin バージョン: 2.10
  • Maven コマンド: mvn checkstyle:checkstyle
4

3 に答える 3

16

Checkstyle 構成のみを含む別の Maven プロジェクトを作成します。私の場合、このプロジェクトを呼び出しcheckstyle-config、次のものが含まれています。

checkstyle-config/src/main/resources/checkstyle.config.xml
checkstyle-config/src/main/resources/checkstyle.suppressions.xml
checkstyle-config/pom.xml

このプロジェクトの POM ファイルは簡単です。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.totaalsoftware.incidentmanager</groupId>
  <artifactId>checkstyle-config</artifactId>
  <version>2.0.0-SNAPSHOT</version>
</project>

インストールされるようにビルドします。次に、Checkstyle 実行の依存関係として使用します。たとえば、次のようになります。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <goal>check</goal>
        </goals>
      </execution>
    </executions>
    <dependencies>
      <dependency>
        <groupId>com.totaalsoftware.incidentmanager</groupId>
        <artifactId>checkstyle-config</artifactId>
        <version>2.0.0-SNAPSHOT</version>
      </dependency>
    </dependencies>
    <configuration>
      <configLocation>checkstyle.config.xml</configLocation>
      <suppressionsLocation>checkstyle.suppressions.xml</suppressionsLocation>

      ... other configuration ...

    </configuration>
  </plugin>
于 2013-10-30T18:01:15.627 に答える
2

プラグイン構成で場所を定義する際にもいくつか問題がありましたが、プラグインが使用する Maven プロパティ checkstyle.config.location をオーバーライドすることで、これを機能させることができました。以下の例を参照してください。これは、マルチモジュールの Maven プロジェクトで動作し、オーバーヘッドがほとんど必要ありません。

<checkstyle.config.location>${project.parent.basedir}/my_checks.xml</checkstyle.config.location>
于 2016-08-15T17:39:12.610 に答える