java - Gradle 在构建的 jar 中复制依赖项

标签 java gradle dependencies

我正在寻找一种在构建的 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。无论您如何调整类路径,标准类加载器都不会执行此操作。

另请参阅https://github.com/Onslip/gradle-one-jar/

关于java - Gradle 在构建的 jar 中复制依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50684655/

相关文章:

java - Android - 调用 Activity 完成()的共享元素转换

Java:跨类传递变量

android - gradle 文件和我的项目中的导入错误

node.js - 如何解决我的 create-react-app 包的 webpack "unmet peer dependency"警告?

c++ - 为 C/C++ 可执行文件自动生成目标文件(链接器)依赖项

java - Tomcat 6.0 上的 SSL

java - 如何使用 Dozer 将数组映射到复杂类型

gradle 'build' 任务困惑

gradle - 如何让 Gradle 下载依赖库到项目目录

python - 在 Ubuntu 上卸载了 IPython,但仍然可以使用