我是新手。
我有Java项目,有maven依赖项和本地Java归档依赖项。我想构建一个包含我的代码和所有依赖项的独立jar。
我试过
dependencies {
runtime files(...)
runtime group ...
}
在我稍后运行程序时使库可用,但它不起作用,它们在运行时不可用...
我也试过这个:
from("$projectDir") {
include '../lib/**';
}
但没有成功......当我运行它时,java程序找不到依赖项(NoClassDefFoundError)。
答案 0 :(得分:4)
回答你的问题:
我想构建一个包含我的代码和所有代码的独立jar 的依赖关系。
这听起来像是在问你如何建造一个"胖罐"在Gradle。您可以使用JAR任务执行此操作:
jar {
from {configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
...
}
第一行代码基本上表示" jar up" "编译"下的所有已配置依赖项依赖配置。显然,如果你想要包含的其他依赖配置中有不同的依赖关系,你也可以包含它们或代替它们,即
configurations.runtime.collect { ... }
在运行构建任务或创建JAR的任何任务之后,您应该在相应的存档中找到所有项目的依赖项JAR。
答案 1 :(得分:0)
按原样在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
}
瓶子将放在./build/libs