6

カスタム checkstyle チェック ファイル (checks.xml と呼ばれる) があり、Maven と Eclipse の両方で同じファイルを使用しようとしています。を除いて、すべてうまく機能しSuppressionFilterます。

このchecks.xmlファイルには、

<module name="SuppressionFilter">
    <property name="file" value="src/main/resources/checkstyle/checkstyle-suppressions.xml"/>    
</module>

これは、Mavenを実行すると機能します。ただし、Eclipseを実行するときは、構成を次のように変更する必要があります

<module name="SuppressionFilter">
    <property name="file" value="${basedir}/src/main/resources/checkstyle/checkstyle-suppressions.xml"/>    
</module>

ただし、maven で ${basedir} プロパティを使用して実行すると、プロパティ ${basedir} が設定されていないというエラーが表示されます。

MavenとEclipseの両方でこの同じ構成ファイルを使用する方法はありますか? あるべきだと思いますが、抑制フィルターを適切に設定する方法について何かが欠けています。

ありがとう、ジェフ

4

4 に答える 4

7

これは地獄です。EclipseとMavenは抑制を異なる方法で処理し、変数を共有しません。RolfEngelhardから派生

したがって、pom.xmlでは:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-checkstyle-plugin</artifactId>
   <version>2.8</version>
   <configuration>
     <propertyExpansion>config_loc=${basedir}/src/main/checkstyle</propertyExpansion>
     <configLocation>${basedir}/src/main/checkstyle/checkstyle.xml</configLocation>
      <suppressionsLocation>${basedir}/src/main/checkstyle/suppressions.xml</suppressionsLocation>
     <includeTestSourceDirectory>true</includeTestSourceDirectory>
   </configuration>
   <executions>
     <execution>
       <phase>verify</phase>
       <goals>
         <goal>check</goal>
       </goals>
     </execution>
   </executions>
 </plugin>

現在checkstyle.xmlにあります($ {config_log}はEclipse固有のものですが、pomで指定することにより、Mavenでも使用できるようになります):

<module name="SuppressionFilter">
  <property name="file" value="${config_loc}/suppressions.xml" />
</module>

また、CheckStyleに依存するプラグインやその他のプラグインを使用している場合はmaven-site-plugin、それらを更新してconfig_locプロパティも含めることを忘れないでください(または、pomに対してグローバルに宣言しますが、これを正しく機能させることはできませんでした) )。

于 2012-05-24T04:16:43.250 に答える
6

確かに、mavenとeclipseの両方で同じ構成ファイルを使用する方法がありますが、最初に少しセットアップする必要があります。マルチモジュールのMavenプロジェクトでもこれを実現する方法についてブログに投稿しました。参照:maven-checkstyle-and-eclipse

于 2010-12-18T21:20:16.593 に答える
-2

${basedir}pom でプロパティとして定義してみてください。pom リファレンス
の概要を参照してください。

<property>
          <name>basedir</name>
          <value>${project.basedir}</value>
</property>
于 2010-10-20T20:11:46.957 に答える