java - 查找未使用的 gradle 运行时依赖项

标签 java maven gradle dependencies

我正在更新大量遗留 Java 应用程序。当前构建使用 ant,其依赖项来自每个项目的 lib 目录。依赖项是每个项目的一部分,并已 checkin 源代码控制。更新的目的是将构建转换为 gradle 并使用 maven 存储库进行依赖管理。为简单起见,旧版本使用 ant 构造从其他项目的 lib 目录复制依赖项,例如:

<fileset dir="../anotherlegacyproject/lib">
    <include name="**/*.jar" />
</fileset>

此方法用于编译和运行时依赖项。虽然这可行,但它会导致部署 Artifact 膨胀,因为其中包含许多在运行时不需要的 jar。例如,许多项目在运行时中包含 junit、hamcrest 和 jaxb-xjc,即使它们仅用于编译或测试。大多数项目都创建一个 zip 文件和一个包含可部署应用程序的 RPM。我想仅限 在 RPM 中包含所需的运行时依赖项。

我正在尝试确定一种可靠的方法来识别这些未使用的运行时依赖项。

我查看了帖子:How to find\remove unused dependencies in gradle但这并没有解决未使用的运行时依赖项。我尝试使用以下 gradle 插件,但没有一个可以识别未使用的运行时依赖项:
  • github.com/nebula-plugins/gradle-lint-plugin
  • github.com/wfhartford/gradle-dependency-analyze
  • docs.gradle.org/current/userguide/jdepend_plugin.html

  • 我对任何能够可靠工作的解决方案持开放态度,但我的偏好将按以下顺序排列:
  • 一个现有的 gradle 插件
  • 可以合并到 build.gradle 文件中的代码或打包为插件的常规代码
  • 还有什么
  • 最佳答案

    最近我们将一些项目从 1.6 迁移到 1.8,需要找出未使用的 jar。我试图使用一些插件和工具,但无法解决我的问题。
    由于堆栈溢出,我得到了一些解决这个问题的见解。以下是找出项目中未使用的 jar 的步骤。

  • 首先,您需要获取模块的最新 EAR/WAR。假设你
    模块名称是 CheckDependency,所以获取最新的 EAR/WAR 并获取它
    出lib文件夹。
  • 现在在eclipse中用新的替换模块的lib文件夹,它
    取自 EAR/WAR。
  • Eclipse 转到您的模块并选择 Gradle(STS)[这应该是
    安装在你的机器上]-->点击任务快速
    启动器
    -->选择项目TattleTaleReport 它会产生
    目标文件夹中的所有报告,名称为 流言蜚语
  • 关于java - 查找未使用的 gradle 运行时依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38933624/

    相关文章:

    android - 资源样式项名称 “android:blablabla”红色突出显示,不工作,无错误

    java - 使用 INDEX 删除 ArrayList 中的元素导致 java.util.ConcurrentModificationException

    java - 返回 StringBuilder 或 StringBuffer 的 StringUtils.replaceEach?

    java - Java RESTful 服务中的 httpcontext

    java - 如何使用 VSCode 执行没有 main 方法的 java 程序?

    maven - 为什么 Apache Commons 库的 groupId 不一致,具体取决于项目?

    java - 如何强制执行 Spring 配置类的加载顺序?

    java - 使用套接字 I/O 阻塞操作中断/停止线程

    android - 当内部类依赖于 R.java 时,Gradle 在 Android Javadocs 中排除 R.java

    gradle - 如何在自定义PublishToIvyRepository任务中重用IvyPublication?