Skip to content

Le1a/JarLibsConsolidator

Repository files navigation

JarLibsConsolidator

一键收集并合并项目中的 JAR 依赖,统一输出到 all-in-one 目录,并自动添加为项目库,挂载到所有模块。

Kotlin Gradle IntelliJ%20Platform JDK

📺 演示视频

JarLibsConsolidator Plugin Demo

🎬 点击播放按钮观看完整演示 | 在新窗口打开

背景与动机

在进行代码审计工作时,我们经常需要分析已编译打包的 JAR 源码项目。然而,IntelliJ IDEA 往往无法自动识别所有的依赖关系,特别是在分析国产开源项目时更为明显。过去我一直使用以下命令来手动收集依赖:

cp `find ./ -name "*.jar"` ./all-in-one

但每次操作都颇为繁琐。

为了提高工作效率,我开发了这个插件,让依赖收集变得简单高效——只需右键点击,即可完成所有 JAR 文件的收集、整理和项目库配置。

特性

  • 一键操作:右键项目 → 选择"一键添加依赖"。
  • 智能扫描:递归扫描 .jar,跳过常见目录(如 node_modulestargetbuild.gradle.mvn 等)。
  • 重名处理:自动对同名 jar 加后缀去重(如 x.jarx_2.jar)。
  • 统一管理:复制到 all-in-one/,创建项目级库 all-in-one 并添加至所有模块依赖。
  • 版本兼容:适配 2024.1–2025.1+(build 241251.*)线程模型与 API。

前置依赖

由于 Gradle 分发包体积较大(130MB+),需要手动下载并放置到项目根目录:

# 下载 Gradle 8.11.1 分发包
wget https://mirrors.cloud.tencent.com/gradle/gradle-8.11.1-bin.zip

# 或者使用 curl
curl -O https://mirrors.cloud.tencent.com/gradle/gradle-8.11.1-bin.zip

# 确保文件位于项目根目录
ls gradle-8.11.1-bin.zip

注意:该文件已被 .gitignore 排除,不会被提交到版本控制中。

快速上手

  1. 插件已上传至JetBrains Marketplace,可直接在IDEA插件市场搜索JarLibsConsolidator进行安装

  2. 本地运行(开发/体验)

./gradlew runIde
  1. 打包安装(生成可安装的 zip)
./gradlew buildPlugin
# 产物:build/distributions/JarLibsConsolidator-<version>.zip
# IDE 中安装:Settings/Preferences → Plugins → ⚙ → Install Plugin from Disk…

或者直接用Releases里我打包好的jar包,在IDEA插件选择本地磁盘安装即可。

使用

  • 在 Project 视图中右键项目根目录或任意目录 → 选择“一键添加依赖”。
  • all-in-one/ 已存在,会提示是否删除并重建。
  • 完成后可在项目结构的 Libraries 看到 all-in-one,并已挂载至所有模块。

工作原理(简述)

  1. 遍历工程目录收集所有 .jar 文件(跳过常见无关目录)。
  2. 复制到 all-in-one/,处理重名冲突。
  3. 创建/刷新项目库 all-in-one,将 jar 作为 CLASSES 根添加,并依附到所有模块。

兼容性与要求

  • IDE:IntelliJ IDEA 2024.1 – 2025.1+(build 241251.*
  • JDK:17
  • 运行时插件com.intellij.java(已通过平台打包)

常见问答

  • 会修改源码吗? 不会,仅复制 jar 并写入项目库配置。
  • 扫描很慢怎么办? 建议在项目根执行,插件已默认跳过体量较大的常见目录;也可在更小的子目录执行。

开发

# 验证插件
./gradlew verifyPlugin

# 本地运行沙箱 IDE
./gradlew runIde

# 构建可分发包
./gradlew buildPlugin

About

一个IDEA插件:一键收集项目中所有jar包依赖的工具插件。遍历项目目录收集所有jar文件,复制到all-in-one文件夹,并自动添加为项目库。

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages