Gradle jar任务,用于在目录

时间:2016-03-31 13:09:40

标签: java gradle jar build.gradle

我有一个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'
}
  1. 我想在不包含/解压缩整个jar文件目录 知道他们的名字。这可能吗?
  2. 我想要的内容     jar文件也可以在这个jar的classpath上。这怎么可能?
  3. 更新

    我能够学习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)
    }
    

1 个答案:

答案 0 :(得分:0)

我建议使用springboot这样的框架来创建一个可运行的jar。它将不需要手动摇动很多锅炉板的gradle代码。有一个spring-boot gradle插件,几乎可以为您完成所有操作: https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-gradle-plugin.html

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

相关问题