gpt4 book ai didi

Maven 依赖项 :analyze thinks my JDBC JARs are "unused"

转载 作者:行者123 更新时间:2023-12-01 12:49:15 25 4
gpt4 key购买 nike

我正在使用 MySQL 连接器 JAR 建立 JDBC 连接。我的理解是我在类路径中只有这个 JAR,当我指定 mysql: 时它会被动态加载。在连接字符串中。

我在 POM 中使用 <scope>runtime</scope> 声明了这种依赖关系.当我运行 mvn dependency:analyze ,它将此 Artifact 报告为“未使用”。我想它无法通过简单的静态分析确定我是否需要它,好吧,但可以肯定的是,几乎所有 runtime 都是如此。 -范围的神器,对吧?我如何才能让 Maven 相信这个 Artifact 确实需要存在?

最佳答案

dependency:tree 将列出您的 pom 文件引用的所有 Artifact ,如果您正在寻找的话。否则你很可能不走运。 Maven 公开声明他们的依赖分析器在字节码级别工作,并且会在某些情况下错误地将依赖报告为未使用。

可能会或可能不会使用运行时范围的依赖项,无法通过字节码分析来判断(事实上,无法通过我能想到的大多数分析来判断)。 Maven 必须决定是假设它们已被使用还是假设它们未被使用,他们选择了后者,认为用户可以弄清楚。

没有选项告诉 Maven 将运行时范围的依赖项视为已使用,但您可以手动将特定 Artifact 添加到配置中的 usedDependencies 数组。 Maven 将简单地假设使用了这些依赖项。您也可以编写自己的依赖性分析器或寻找可以处理这种情况的第 3 方依赖性分析器。

==评论更新==

你是对的,它很新。 issue已在 2012 年 11 月 25 日发布的 2.6 版中得到修复。它还没有出现在许多公共(public)镜像存储库中。你可以找到它here .

由于它太新了,所以没有它的用​​法示例,但是 Maven 遵循一些约定。我希望它被声明为:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
<configuration>
<usedDependencies>
<usedDependency>org.foo.bar:baz-tron</usedDependency>
<usedDependency>org.foo:whatsit</usedDependency>
</usedDependencies>
</configuration>
</plugin>
</plugins>
</build>

关于Maven 依赖项 :analyze thinks my JDBC JARs are "unused",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13603761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com