由于 API 不兼容,无法在插件“org.apache.maven.plugins:maven-war-plugin:2.2”中加载 mojo 'war'

Unable to load the mojo 'war' in the plugin 'org.apache.maven.plugins:maven-war-plugin:2.2' due to an API incompatibility

提问人:Ruchi 提问时间:1/11/2023 最后编辑:Ruchi 更新时间:10/28/2023 访问量:9517

问:

我正在尝试构建我的办公项目,我已经从 java 11 升级到 17。

我已经根据兼容的 java 版本更新了我的 maven,在获得很多关于其余错误的帮助后,我仍然坚持在这个错误上。

到目前为止,我已经更新了:
Eclipse版本,java版本,java版本,surefire插件详细信息,设置中的mirrorOf标签.xml。

版本详情如下:

  • Java 版本 - 17 .

  • Java 主页 - C:\Program Files\Java\jdk-17.0.5

  • java 路径 - C:\Program Files\Java\jdk-17.0.5\bin -

  • 我的 POM 中的 Java 版本 - 17

  • 我的系统中安装的 Maven 版本 - 3.8.5

  • maven_home - C:\project\Softwares\Maven\apache-maven-3.8.5\bin

  • 我的 pom.xml 中的 maven - 3.8.1

现在,在设置完所有内容后,这是错误。请帮助我纠正这个问题:


Unable to load the mojo 'war' in the plugin 'org.apache.maven.plugins:maven-war-plugin:2.2' due to an API incompatibility: org.codehaus.plexus.component.repository.exception.ComponentLookupException: Cannot access defaults field of Properties

编辑 1:添加 pom.xml 4.0.0

java maven pom.xml maven-plugin java-17

评论

1赞 khmarbaise 1/11/2023
您使用的插件版本大约有 10 年的历史。您应该使用最新版本的插件 maven.apache.org/plugins
0赞 Ruchi 1/11/2023
我真的很抱歉,但我是新手。你能告诉我确切的事情吗?你是说 Maven 版本?还是 war-plugin 版本?我的 maven war 插件是 <artifactId>maven-war-plugin</artifactId><version>3.3.1</version>我的 maven-compiler 插件是 <artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version>
0赞 khmarbaise 1/11/2023
插件版本....
0赞 brat 1/12/2023
也许展示你的绒球的样子可能会帮助人们帮助你?虽然,如果它太大,不要倾倒整个东西。也许显示通常显示版本的顶部部分和 maven 插件的特定依赖项标签可能就足够了。
0赞 Ruchi 1/16/2023
嗨,@brat ,我已经用 mvn dependency:tree 的响应更新了答案。你能检查并帮助我吗?

答:

6赞 Oshan Pitigala 1/16/2023 #1

请尝试以下选项

  1. 在您的 pom.xml 中,配置以下插件

    • maven编译器插件-> 3.10.1
    • maven-war-plugin -> 3.3.2
  2. 尝试清理项目并更新 maven 依赖项(右键单击 project -> Maven -> update project)

  3. 如果它不起作用,则您的 Maven 安装可能存在问题。 您可以尝试卸载 M2Eclipse 插件,删除驱动器上的 .m2 文件夹,然后重新安装 M2Eclipse。


附言:

我注意到您在项目中使用了 servlet 3 依赖项。由于您使用的是 java 17,因此您可以相应地将它们升级到最新的可用版本

评论

0赞 Ruchi 1/16/2023
删除插件无济于事。我现在无法纠正,尝试了提到的所有步骤。另外,你能详细说明最后一行吗?你只是说 servlet 依赖项的版本吗?
0赞 Ruchi 1/16/2023
为什么 maven 选择 2.2 作为战争插件而不是最新的插件。尝试过 Maven 更新和清理..请参考编辑 2.
0赞 cdc 1/19/2023
为具有最新版本号 (3.3.2) 的 maven-war-plugin 添加一个特定的插件条目,为我的战争版本提供了诀窍,这些版本因与原始问题相同的错误而失败。