【问题标题】:Maven dependency analysis reports some "false-positives"Maven 依赖分析报告了一些“误报”
【发布时间】:2019-12-20 22:41:18
【问题描述】:

我被要求优化一个大型 maven 项目的依赖项,即查找并删除项目现在正在使用的所有依赖项。因此我选择了插件maven-dependency-analysis:

  <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.1.1</version>
        <dependencies>
            <dependency>
                <groupId>org.apache.maven.shared</groupId>
                <artifactId>maven-dependency-analyzer</artifactId>
                <version>1.11.1</version>
            </dependency>
        </dependencies>
    </plugin>

通过执行命令mvn dependency:analyze -DignoreNonCompile=true输出未使用的maven依赖项的报告。我发现在“发现未使用的声明的依赖项”部分下报告的大多数依赖项都可以毫无问题地删除,但是有一些依赖项的删除会导致编译错误。我想知道为什么此类依赖项包含在“发现未使用的声明依赖项”部分中,是否有我遗漏的东西?

感谢您的关注。

【问题讨论】:

    标签: maven


    【解决方案1】:

    了解这种机制的工作原理很重要:

    Maven 使用 Object WebASM 框架来分析您的原始字节码。它会遍历您的所有类,然后构建这些引用的所有类的列表。

    但是您可以以不同的方式使用类,通常使用反射(还有一些东西没有编译到类文件中:https://maven.apache.org/plugins/maven-dependency-plugin/faq.html#unused),而这种机制无法检测到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多