Java Gradle jar任务在目录中添加jar文件的内容

Java Gradle jar任务在目录中添加jar文件的内容,java,gradle,jar,build.gradle,Java,Gradle,Jar,Build.gradle,我有一个jar文件目录,可能是空的,也可能有各种名称的jar文件。我想把它们解压缩,放进我的肥罐子里。我见过from-zipTree('path')的用法,但这似乎只适用于特定的jar/zip文件名 这是我目前的毕业任务 task buildSweetJar(dependsOn: classes, type: Jar) { baseName 'MySweetJar' from ([sourceSets.main.output, configurations.compile.col

我有一个jar文件目录,可能是空的,也可能有各种名称的jar文件。我想把它们解压缩,放进我的肥罐子里。我见过from-zipTree('path')的用法,但这似乎只适用于特定的jar/zip文件名

这是我目前的毕业任务

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)
    }
    

    我建议使用springboot之类的框架来创建一个可运行的jar。它将消除需要手动曲柄许多锅炉板格雷德尔代码。有一个spring boot gradle插件,它几乎可以为您做任何事情:


    我不确定您是如何管理依赖项的,但将它们存储在文件系统中不是一个好的做法。您应该从存储库(如Maven Central)解析它们。我不确定您是否在这样做,但问题表明您没有。

    一个“胖罐子”不仅仅是一个包含运行代码所需的所有罐子的罐子-我想您知道这一点?事实上,不,我不知道。我猜我的术语不对。胖jar是可执行jar的另一个名称,您可以从命令行自己运行它。e、 g.“java-jar your_jar_file.jar”是您想要做的,还是您正在尝试实现其他目标?是的,这就是我正在尝试做的。创建jar的任务已经存在,我们将其用作可执行文件。但是,我需要为一个新的目的添加额外的项目。谢谢。海报应该只使用fatJar插件。建议将spring引导用于范围可能很小的东西是过分的。