我正在将一个项目从Java 8升级到Java 17,并且我正在接收错误(在pom.xml文件中)"无法初始化类org.apache.maven.plugin.war.util. webappstructureserializer"。作为升级过程的一部分,我也更新了pom文件中的其他依赖项。我在其他堆栈溢出的帖子中看到,这可能意味着应该更新maven-war-plugin。问题是,我目前没有使用该插件。当我添加它时,它确实解决了这个问题,但我只是想知道为什么会这样。
我怀疑发生了以下情况。
当你构建WAR时,Maven WAR Plugin会被隐式调用(你可以在日志中看到)。
由于某些原因,该版本比最新可用版本老(可能是缓存问题,可能是父POM等)。通过显式设置Maven War Plugin的版本,这个问题就会消失。
在我的pom.xml中,我添加了下面的代码来修复这个错误。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.4.1-SNAPSHOT</version>
</plugin>
别忘了添加war依赖
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.4.1-SNAPSHOT</version>
<type>maven-plugin</type>
</dependency>