4

我正在尝试将 import-control 添加到我们的 checkstyle 中,即 import-control 文件存在于制作 checstyle.xml 文件的项目中,而不是我们稍后构建的项目中。

我们有一个特定的 gradle 项目,我们在其中定义了所有规则,并且在这个项目中我们的 import-control.xml。我的问题是,当我尝试在另一个使用此检查样式的项目上运行 mvn clean install 时,它会尝试在该项目中找到 import-control.xml 。

我在 checkstyle.xml 中做了以下配置:

        <module name="ImportControl">
            <property name="file" value="import-control.xml"/>
        </module>

并且 import-control.xml 放在 checkstyle.xml 旁边。

谁能告诉我我需要做什么,以便我可以告诉 maven 这个文件存在于我们的 checkstyle 项目中,而不是正在构建的根项目中?

我得到的错误是: 无法初始化模块 TreeWalker - 无法初始化模块 ImportControl - 属性“文件”的非法值“import-control.xml” 无法找到:import-control.xml

在 2.17 版中

无法加载 import-control.xml:找不到文件:/C://import-control.xml:\import-control.xml

我尝试过的: 将 checkstyle 版本升级到 3.1.0(我们曾经有 2.17) 使用 import-control.xml 但没有用。试图阅读文档和代码,但没有帮助。

谢谢你的帮助

稍后给你写信/Mårten

mvn配置:

      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>3.1.0</version>
          <executions>
            <execution>
              <id>do checkstyle</id>
              <phase>process-sources</phase>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <includes>projectA/**/*</includes>
            <configLocation>checkstyle.xml</configLocation>
            <consoleOutput>true</consoleOutput>
            <failOnViolation>false</failOnViolation>
            <failsOnError>true</failsOnError>
            <includeTestSourceDirectory>true</includeTestSourceDirectory>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>company.checkstyle</groupId>
              <artifactId>company-checkstyle</artifactId>
              <version>0.2-SNAPSHOT</version>
            </dependency>
          </dependencies>
        </plugin>
      </plugins>
    </pluginManagement>```
4

1 回答 1

3

再次感谢 barfuin,看起来 ${config_loc} 是答案,但我们还需要做一件事才能让它充分发挥作用。

所以,为了从 checkstyle 项目中添加资源,就像在这个文件中的 import_control.xml 一样,我在我的 checkstyle.xml 中执行了以下操作:

    <module name="ImportControl">
        <property name="file" value="${config_loc}/config/import_control.xml"/>
    </module>

我还需要做的是添加:

<propertyExpansion>config_loc=</propertyExpansion>

在我的 pom.xml 配置中,这解决了 config_loc 未定义和 checkstyle 将文件作为资源查找的问题,并为我提供了以下 pom.xml 配置:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
      <executions>
        <execution>
          <id>do checkstyle</id>
          <phase>process-sources</phase>
          <goals>
            <goal>check</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <includes>projectA/**/*</includes>
        <configLocation>checkstyle.xml</configLocation>
        <consoleOutput>true</consoleOutput>
        <failOnViolation>false</failOnViolation>
        <failsOnError>true</failsOnError>
        <includeTestSourceDirectory>true</includeTestSourceDirectory>
        <propertyExpansion>config_loc=</propertyExpansion>
      </configuration>
      <dependencies>
        <dependency>
          <groupId>company.checkstyle</groupId>
          <artifactId>company-checkstyle</artifactId>
          <version>0.2-SNAPSHOT</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
于 2019-07-03T15:07:21.877 回答