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

如何通过Gradle将本地Jar的类打包到Kotlin JVM发布Jar包中

解决方案

直接修改build.gradle.kts,在原有配置基础上新增Jar任务的合并逻辑即可,该配置兼容java-gradle-plugin的发布流程,不会影响后续插件发布操作。

完整配置示例

plugins {
  id("java-gradle-plugin")
  kotlin("jvm")
}

dependencies {
  implementation(kotlin("gradle-plugin-api"))
  implementation(fileTree("lib") { include("*.jar") })
}

// 合并本地Jar到构建产出的核心配置
tasks.jar {
  // 筛选lib目录下的所有Jar依赖,解压后合并到最终Jar
  from(
    configurations.runtimeClasspath.get()
      .filter { it.parentFile.name == "lib" && it.extension == "jar" }
      .map { zipTree(it) }
  )
  // 可选:配置重复文件处理策略,避免类/资源重复导致构建报错
  duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

配置说明

  • 该逻辑只会合并lib目录下的本地Jar,不会把其他远程依赖的类也打包进去,符合仅整合未公开依赖的需求
  • zipTree是Gradle内置工具,会自动解压Jar文件,把类文件、资源文件都合并到最终产出的Jar根目录
  • 配置默认优先保留项目自身的代码文件,遇到重复内容会跳过本地Jar里的重复项

验证方式

构建完成后执行以下命令,即可查看最终Jar包内的所有类,确认本地Jar的类已经成功合并:
jar tf build/libs/[你的构建产物名称].jar

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:48:05