我正在寻找一种在构建的 jar 文件中添加 gradle 依赖项的解决方案。
例如,我有依赖项 com.fazecast:jSerialComm
并希望将库添加到 jar 中的特定文件夹中,库路径应为libs/jserialcomm/jSerialComm-2.0 .2.jar
最佳答案
将以下内容添加到您的 build.gradle 中:
jar {
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
这会将所有依赖项的内容合并到输出 jar 中。
另请参阅http://www.baeldung.com/gradle-fat-jar .
在另一种方法中,可以将依赖项的 jar 复制到输出 jar 中(jar in 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。无论您如何调整类路径,标准类加载器都不会执行此操作。
关于java - Gradle 在构建的 jar 中复制依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50684655/