You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle如何仅打包依赖jar包 排除当前模块自身jar文件

配置方案

Groovy 写法

直接在build.gradle中添加自定义Zip类型任务即可:

task packageDependenciesOnly(type: Zip) {
    // 打包所有runtimeClasspath下的依赖jar,默认不包含当前模块自身产物
    from configurations.runtimeClasspath
    // 自定义压缩包内部存放依赖的目录,不需要可直接删除该行
    into 'lib'
    // 自定义输出zip包的文件名前缀
    archiveBaseName = 'dependencies-only'
}

执行./gradlew packageDependenciesOnly命令,即可在build/distributions目录下获取仅包含依赖jar的zip包。

如果需要过滤特定依赖,可添加排除规则:

task packageDependenciesOnly(type: Zip) {
    from configurations.runtimeClasspath {
        // 排除指定坐标的依赖示例
        exclude group: 'com.example.unwanted', module: 'test-lib'
        // 排除所有快照版本依赖示例
        exclude { it.version.contains('SNAPSHOT') }
    }
    into 'lib'
    archiveBaseName = 'dependencies-only'
}

Kotlin DSL 写法

对应build.gradle.kts的实现如下:

tasks.register<Zip>("packageDependenciesOnly") {
    from(configurations.runtimeClasspath)
    // 自定义压缩包内部存放依赖的目录
    into("lib")
    // 自定义输出zip包的文件名前缀
    archiveBaseName.set("dependencies-only")
}

带过滤规则的版本:

tasks.register<Zip>("packageDependenciesOnly") {
    from(configurations.runtimeClasspath.get().filter {
        // 特殊场景下可手动排除当前模块生成的jar,普通场景无需添加该规则
        !it.name.startsWith(project.name)
        // 额外排除指定依赖示例
        && !it.path.contains("unwanted-lib")
    })
    into("lib")
    archiveBaseName.set("dependencies-only")
}

注意事项

  • configurations.runtimeClasspath 默认仅包含当前模块的第三方依赖,不会包含当前模块编译生成的jar,无特殊自定义配置的场景不需要额外做自身jar的排除。
  • 生成的zip包默认输出路径为build/distributions/${archiveBaseName}.zip,你可以通过destinationDirectory.set(...)自定义输出路径。
  • 如果需要打包compileOnly等其他作用域的依赖,替换runtimeClasspath为对应配置名即可。

内容的提问来源于stack exchange,提问作者user2297550

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 17:09:04