使用 GitHub 操作执行 maven 插件时缺少所需的类

sbe*_*ard 6 maven-plugin maven github-actions

最近,我的GitHub 操作在特定的 Maven 目标上失败,抱怨缺少所需的类(来自 plexus-utils)

\n

到目前为止,一切都运行良好,并且在本地仍然运行良好。

\n

(\xe2\x9a\xa0 在我的情况下这会影响,impsort-maven-plugin但这可能会影响其他maven插件,请参阅答案以更好地理解)

\n

这是我的完整日志 \xe2\x9d\x8c :

\n
Error:  \n\nFailed to execute goal net.revelc.code:impsort-maven-plugin:1.6.2:check (default-cli) on project leshan-core: \nExecution default-cli of goal net.revelc.code:impsort-maven-plugin:1.6.2:check failed:\nA required class was missing while executing net.revelc.code:impsort-maven-plugin:1.6.2:check:\norg/codehaus/plexus/util/DirectoryScanner\n\nError:  -----------------------------------------------------\nError:  realm =    plugin>net.revelc.code:impsort-maven-plugin:1.6.2\nError:  strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy\nError:  urls[0] = file:/home/runner/.m2/repository/net/revelc/code/impsort-maven-plugin/1.6.2/impsort-maven-plugin-1.6.2.jar\nError:  urls[1] = file:/home/runner/.m2/repository/com/github/javaparser/javaparser-core/3.22.1/javaparser-core-3.22.1.jar\nError:  urls[2] = file:/home/runner/.m2/repository/com/google/guava/guava/30.1.1-jre/guava-30.1.1-jre.jar\nError:  urls[3] = file:/home/runner/.m2/repository/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar\nError:  urls[4] = file:/home/runner/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar\nError:  urls[5] = file:/home/runner/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar\nError:  urls[6] = file:/home/runner/.m2/repository/org/checkerframework/checker-qual/3.8.0/checker-qual-3.8.0.jar\nError:  urls[7] = file:/home/runner/.m2/repository/com/google/errorprone/error_prone_annotations/2.5.1/error_prone_annotations-2.5.1.jar\nError:  urls[8] = file:/home/runner/.m2/repository/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar\nError:  Number of foreign imports: 1\nError:  import: Entry[import  from realm ClassRealm[project>org.eclipse.leshan:leshan-core:2.0.0-SNAPSHOT, parent: ClassRealm[maven.api, parent: null]]]\nError:  \nError:  -----------------------------------------------------: org.codehaus.plexus.util.DirectoryScanner\nError:  -> [Help 1]\nError:  \nError:  To see the full stack trace of the errors, re-run Maven with the -e switch.\nError:  Re-run Maven using the -X switch to enable full debug logging.\nError:  \nError:  For more information about the errors and possible solutions, please read the following articles:\nError:  [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginContainerException\nError: Process completed with exit code 1.\n
Run Code Online (Sandbox Code Playgroud)\n

sbe*_*ard 11

发生这种情况似乎是因为:

  1. 由于最近默认的GitHub 图像运行器现在正在使用maven 3.9.0(请参阅runner-images#7216
  2. Maven 3.9.0删除了向后兼容性依赖plexus-utils(请参阅maven-3.9.0/release-notes
  3. impsort-maven-plugin不声明 COMPILE 依赖项plexus-utils(请参阅impsort-maven-plugin#64

其他 Maven 插件也可能会遇到这个问题。
如果你遇到这个问题,你可以等待插件维护者修复这个问题:

<plugin>
  <groupId>net.revelc.code</groupId>
  <artifactId>impsort-maven-plugin</artifactId>
  <version>1.6.2</version>
  <dependencies>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-utils</artifactId>
      <version>3.5.1</version>
    </dependency>
  </dependencies>
</plugin>
Run Code Online (Sandbox Code Playgroud)

(更多详细信息请参见runner-images#7216-issuecomment-1455954873