Maven 构建失败并出现错误:执行 com.cosium.code:git-code-format-maven-plugin 时遇到 API 不兼容

问题描述 投票:0回答:1

我有一个子项目

Project C
,它依赖于 Maven 的物料清单 (BOM) 父项目
Project P
。父项目
Project P
包含一些需要应用于所有子项目的代码样式和格式。

我不知道如何将这些代码样式应用到我的子项目

Project C
,因为当我在子项目上运行
mvn clean install
时,我收到错误:

执行 com.cosium.code:git-code-format-maven-plugin:3.4:validate-code-format: java.lang.IllegalAccessError: class com.google.googlejavaformat.java.JavaInput (在未命名模块@0x56da96b3中)无法访问类com.sun.tools.javac.parser.Tokens$TokenKind

完整错误供参考:

[错误]无法在项目project-c上执行目标com.cosium.code:git-code-format-maven-plugin:3.4:validate-code-format(validate-code-format):执行validate-code-目标格式 com.cosium.code:git-code-format-maven-plugin:3.4:validate-code-format 失败: 执行 com.cosium.code:git-code-format-maven-plugin:3.4:validate-code-format: java.lang.IllegalAccessError: class com.google.googlejavaformat.java.JavaInput 时遇到 API 不兼容问题(在未命名中)模块@0x4a320414) 无法访问类 com.sun.tools.javac.parser.Tokens$TokenKind (在模块 jdk.compiler 中),因为模块 jdk.compiler 不会将 com.sun.tools.javac.parser 导出到未命名模块 @0x4a320414

我想关闭 Maven 中的 checkstyle 选项,并想构建项目。如何实现这一目标?我尝试了这里提到的一些答案,例如:https://stackoverflow.com/a/70023748/7584240,但它似乎根本不适合我并得到相同的错误。请针对此问题提出一些解决方法。

如果我删除插件:使用 groupId

com.cosium.code
和工件 ID:
git-code-format-maven-plugin
但我不希望对父项目进行任何更改,而是处理子项目中的所有内容。

更新

根据文档进行一些更改后,我只收到一个特定文件的错误。我不确定为什么会收到该错误,因为它应该跳过对所有文件的格式检查。我尝试按照 intellij 格式设置该文件的格式,但构建仍然失败。

我已根据文档将以下内容添加到我的

pom.xml
中:

<plugin>
  <groupId>com.cosium.code</groupId>
  <artifactId>git-code-format-maven-plugin</artifactId>
  <version>${git-code-format-maven-plugin.version}</version>
  <configuration>
      <skip>true</skip>
      <googleJavaFormatOptions>
          <aosp>false</aosp>
      </googleJavaFormatOptions>
  </configuration>
</plugin> 
java maven maven-plugin code-formatting
1个回答
0
投票

您可以在子项目中完全跳过执行插件,通过将插件绑定到阶段

none
,例如:

<plugin>
  <groupId>com.cosium.code</groupId>
  <artifactId>git-code-format-maven-plugin</artifactId>
  <executions>
    <execution>
     <id>validate-code-format</id><!-- the same as in parent -->
     <phase>none</phase>
    </execution>
  </executions>
</plugin> 

您也可以在一个指定的模块中通过不继承配置到子模块来完成:

<plugin>
  <groupId>com.cosium.code</groupId>
  <artifactId>git-code-format-maven-plugin</artifactId>
  <executions>
    <execution>
     <inherited>false</inherited>
     <id>validate-code-format</id><!-- the same as in parent -->
     <phase>none</phase>
    </execution>
  </executions>
</plugin> 
© www.soinside.com 2019 - 2024. All rights reserved.