【发布时间】:2016-07-19 23:15:33
【问题描述】:
我有一个 jar 文件目录,该目录可能是空的,或者有各种名称的 jar 文件。我想解压缩它们并将它们包含在我的胖罐中。我已经看到了 from 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'
}
- 我想包含/解压缩整个目录的 jar 文件 知道他们的名字。这可能吗?
- 我想要的内容 jar 文件也位于此 jar 的类路径中。这怎么可能?
更新:
我能够学习 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)
}
【问题讨论】:
-
一个“胖罐子”不仅仅是一个包含运行代码所需的所有罐子的罐子——我想你知道这一点吗?
-
其实,不,我不知道。我猜我的术语不对。
-
胖 jar 是可执行 jar 的另一个名称,您可以从命令行单独运行它。例如"java -jar your_jar_file.jar" 这是你想要做的,还是你想达到别的目的?
-
是的,这就是我想要做的。创建 jar 的任务已经存在,我们将其用作可执行文件。但是,为了新的目的,我需要向其中添加其他项目。谢谢。
标签: java gradle jar build.gradle