在内置jar中的Gradle复制依赖项

时间:2018-06-04 16:04:50

标签: java gradle dependencies

我正在搜索在我的内置jar文件中添加gradle依赖项的解决方案。

例如,我有依赖项com.fazecast:jSerialComm并希望在jar中的特定文件夹中添加库,库路径应为libs/jserialcomm/jSerialComm-2.0.2.jar

1 个答案:

答案 0 :(得分:0)

将以下内容添加到build.gradle:

jar {
  from {
    configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
  }
}

这会将所有依赖项的内容合并到输出jar中。

另见http://www.baeldung.com/gradle-fat-jar

在另一种方法中,可以将依赖项的jar复制到输出jar(jar中的jar)中,但这也需要编写自定义类加载器。

编辑问题后更新:

OP希望采用第二种方法,采用如下方法:

plugins {
    id "com.github.onslip.gradle-one-jar" version "1.0.5"
}

task awesomeFunJar(type: OneJar) {
    mainClass = 'com.github.rholder.awesome.MyAwesomeMain'
}

这将包括所有依赖的jar进入输出jar中的lib目录。它还将安装一个自定义类加载器,它从jar中的lib目录加载jar。无论你如何调整类路径,标准类加载器都不会这样做。

另见https://github.com/Onslip/gradle-one-jar/