查找未使用的Gradle运行时依赖项

2019年7月30日 13点热度 0条评论

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

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

此方法用于编译和运行时依赖项。尽管这行得通,但由于其中包含许多jar,而在运行时不需要,因此导致部署 Artifact 膨胀。例如,许多项目在运行时中都包含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文件中的代码或打包为插件的groovy代码
  • 其他
  • 解决方案如下:

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

  • 首先,您需要获取模块的最新EAR / WAR。假设你
    模块名称为CheckDependency,因此获取最新的EAR / WAR并获取它
    出lib文件夹。
  • 现在在eclipse中,将模块的lib文件夹替换为新的,
    取自EAR / WAR。
  • Eclipse转到您的模块,然后选择Gradle(STS)[应该是
    安装在您的计算机中]->打任务快速
    启动
    ->选择项目TattleTaleReport 它将生成
    目标文件夹中所有名称为 tattle的报告