我有一个jar文件目录,可能是空的,或者有各种名称的jar文件。我想将它们解压缩并将它们包含在我的胖罐中。我见过使用zipTree('path'),但这似乎只适用于特定的jar / zip文件名。
这是我目前的gradle任务。
task buildSweetJar(dependsOn: classes, type: Jar) {
baseName 'MySweetJar'
from ([sourceSets.main.output, configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } ])
from zipTree ('tmp_plug/*.jar') -- this doesn't work
manifest {
attributes (
'Main-Class': 'my.app.SysInit',
'Class-Path': configurations.compile.collect { it.getName() }.join(' ')
)
}
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
}
更新:
我能够学习FileTree以便能够遍历目录中的每个jar。但是,我不确定如何将其添加到类路径中。
FileTree pluginFileTree = fileTree(dir: 'tmp_plug/')
from ([sourceSets.main.output, configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } ])
pluginFileTree.each {
File pluginJarFile ->
from zipTree (pluginJarFile)
}
我建议使用springboot之类的框架来创建一个可运行的jar。它将不需要手动摇动很多锅炉板的gradle代码。有一个spring-boot gradle插件,几乎可以为你做任何事情:https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-gradle-plugin.html
我不确定你是如何管理你的依赖项,但将它们存储在你的文件系统上并不是一个好习惯。您应该从存储库(例如Maven Central)解析它们。我不确定你是否这样做,但问题表明你不是。