如何外部化maven检查样式插件的检查样式配置

vatpfxk5  于 2023-01-08  发布在  Maven
关注(0)|答案(4)|浏览(138)

我试图使maven-checkstyle-plugin对我们所有的项目使用相同的配置文件。
我试过几种方法,但没有一种有效。
唯一可行的方法是将配置文件放在maven项目的根目录下,然后使用名称作为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>

我试过指定一个绝对的磁盘路径,但是似乎不起作用。(考虑到最终目标是让jenkins做检查样式,如果文件在jenkins服务器上的指定位置,这似乎是一个有效的选项)
我也尝试过创建一个单独的jar文件,只包含xml文件,然后将其作为依赖项使用。(这也将集中配置在一个位置,并防止项目特定的偏差。)不幸的是,这也不起作用。
[错误]无法在项目jenkins-sandbox-project上执行目标组织apache.maven。插件:maven检查样式插件:2.10:检查样式(默认-cli):生成检查样式报告时出错。执行检查样式时失败:无法在位置my-checkstyle-checker.xml处找到配置文件:无法找到资源'sax.html'。-〉[帮助1]
有人能告诉我我做错了什么吗?
它似乎只知道与启动maven命令的位置相同的文件。

  • maven检查样式-插件版本:2.10
  • maven命令:mvn检查样式:检查样式
mftmpeh8

mftmpeh81#

创建一个单独的Maven项目,它只包含Checkstyle配置,在我的例子中,我将这个项目命名为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>
rjee0c15

rjee0c152#

我遇到过类似的问题,我用下面的配置解决了它。
${项目基本目录}/源代码/主资源/检查样式.xml
注意:我的checkstyle文件位于“src/main/resources”中

q7solyqu

q7solyqu3#

我在插件配置中定义位置时也遇到了一些问题,但通过覆盖插件使用的一个Maven属性checkstyle.config.location,我能够让它工作起来。请看下面的例子,它适用于多模块的Maven项目,并且需要很少的开销。

<checkstyle.config.location>${project.parent.basedir}/my_checks.xml</checkstyle.config.location>
slsn1g29

slsn1g294#

在我的例子中,依赖关系的顺序是关键,这是我的pom

<dependency>
    <groupId>org.geotools</groupId>
    <artifactId>gt-epsg-wkt</artifactId>
    <version>${geotools.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.geotools</groupId>
    <artifactId>gt-geometry</artifactId>
    <version>${geotools.version}</version>
</dependency>
<dependency>
    <groupId>org.geotools</groupId>
    <artifactId>gt-swing</artifactId>
    <version>${geotools.version}</version>
</dependency>
<dependency>
    <groupId>org.geotools</groupId>
    <artifactId>gt-shapefile</artifactId>
    <version>${geotools.version}</version>
</dependency>

相关问题