[英]Gradle - How pack dependencies into jar
我是 gradle 新手。
我有 Java 项目,具有 maven 依赖项和本地 Java 归档依赖项。 我想构建一个包含我的代码和所有依赖项的独立 jar。
我试过了
dependencies {
runtime files(...)
runtime group ...
}
当我稍后运行程序时使库可用,但它不起作用,它们在运行时不可用......
我也试过这个:
from("$projectDir") {
include '../lib/**';
}
但没有成功......当我运行它时,java程序找不到依赖项(NoClassDefFoundError)。
回答你的问题:
我想构建一个包含我的代码和所有依赖项的独立 jar。
听起来您是在问如何在 Gradle 中构建“胖罐”。 您可以使用 JAR 任务执行此操作,如下所示:
jar {
from {configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
...
}
第一行代码基本上说明“编译”依赖项配置下的所有配置的依赖项。 显然,如果您想包含的其他依赖项配置中有不同的依赖项,您也可以包含它们或代替它们,即
configurations.runtime.collect { ... }
在运行构建任务或任何创建 JAR 的任务后,您应该在相应的存档中找到所有项目的依赖 JAR。
适用于 gradle 5,原样:
task buildJar(type: Jar) {
manifest {
attributes(
'Main-Class': 'org.mycompany.mainclass'
)
}
classifier = 'all'
baseName = 'MyJar'
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
{
exclude "META-INF/*.SF"
exclude "META-INF/*.DSA"
exclude "META-INF/*.RSA"
}
with jar
}
Jar 将被放置在./build/libs
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.