Gradle - 如何将依赖项打包到 jar 中

Chr*_*ber 2 java dependencies jar gradle

我是 gradle 新手。

我有 Java 项目,具有 maven 依赖项和本地 Java 归档依赖项。我想构建一个包含我的代码和所有依赖项的独立 jar。

我试过了

dependencies {
    runtime files(...)
    runtime group ...
}
Run Code Online (Sandbox Code Playgroud)

在我稍后运行程序时使库可用,但它不起作用,它们在运行时不可用......

我也试过这个:

from("$projectDir") {
    include '../lib/**';
}
Run Code Online (Sandbox Code Playgroud)

但没有成功......当我运行它时,java程序找不到依赖项(NoClassDefFoundError)。

Ric*_*ick 5

回答你的问题:

我想构建一个包含我的代码和所有依赖项的独立 jar。

听起来您是在问如何在 Gradle 中构建“胖罐”。您可以使用 JAR 任务执行此操作,如下所示:

jar {
     from {configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }  
     ...
}
Run Code Online (Sandbox Code Playgroud)

第一行代码基本上说明“编译”依赖项配置下的所有配置的依赖项。显然,如果您想包含的其他依赖项配置中有不同的依赖项,您也可以包含它们或代替它们,即

configurations.runtime.collect { ... }
Run Code Online (Sandbox Code Playgroud)

在运行构建任务或任何创建 JAR 的任务后,您应该在相应的存档中找到所有项目的依赖 JAR。