我正在尝试将项目从java 11迁移到21,为此我需要将依赖插件从3.1.2更新到3.6.+(较低的不支持21)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.2</version> -> to 3.6.1
<configuration>
<failOnWarning>true</failOnWarning>
<excludeTransitive>true</excludeTransitive>
</configuration>
</plugin>
但我发现 3.6.+ 的工作方式似乎有点不同(即使使用 java 11)它开始找到多个新的“使用未声明的依赖项”
16:42:43:965 [main] [ERROR] Used undeclared dependencies found:
16:42:43:965 [main] [ERROR] org.springframework:enter code herespring-web:jar:5.3.30:compile
据我所知,它分析编译的字节码以查找“使用的未声明的依赖项”,但这是错误的:它找到的那些库中的编译类中没有任何导入。
我不明白为什么会这样?是插件bug吗?或者我做错了什么?有人经历过这样的事吗
谢谢你。
您可以通过使用不同版本的
maven-dependency-analyzer
来规避该问题,如下所示:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<failOnWarning>true</failOnWarning>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-dependency-analyzer</artifactId>
<version>1.13.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>analyze-dependencies</id>
<goals>
<goal>analyze-only</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>