我正在try 将一个项目从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.+工作有点不同(even with 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

据我所知,它会分析已编译的字节码来查找"已使用的未声明的依赖项",但这是错误的:在已编译的类中没有任何从它找到的库中导入的内容.

我不明白为什么会这样?是插件错误吗?还是我做错了什么?有人经历过这样的事情吗?

这个问题的Here is a full reproducible repo%

推荐答案

您可以通过使用不同版本的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>

Java相关问答推荐

将linkedHashMap扩展到Java中的POJO类

即使我正在使用并发方法,使用Javascript的应用程序也会继续冻结'

如何以干净的方式访问深度嵌套的对象S属性?

使用Testcontainers与OpenLiberty Server进行集成测试会抛出SocketException

如何使用值中包含与号的查询参数创建一个java.net.URI

通过移动一个类解决了潜在的StubbingProblem.它怎麽工作?

Javadoc在方法摘要中省略方法

为什么我的回收视图会显示重复的列表?

虚拟线程应该很快消亡吗?

解析方法";javax/imageio/metadata/IIOMetadata.getAsTree(Ljava/lang/String;)Lorg/w3c/dom/Node时加载约束冲突

如何在@CsvSource中传递空格作为值

如何使这两种方法合二为一?

对从Spring Boot 3.1.5升级到3.2.0的方法的查询验证失败

无法使用Java PreparedStatement在SQLite中的日期之间获取结果

如何使用WebEnvironment.RANDOM_PORT获得第二个随机端口?

活泼的一次判断成语,结果中等

通过/失败的参数化junit测试方法执行数

如何在Java中的重写方法参数中强制(Enum)接口实现?

验证没有';t work on Hibernate Entity';s字段

Java泛型方法重载