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

问题描述 投票:0回答:1

我有一个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的类路径上。这怎么可能?

更新:

我能够学习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)
}
java gradle jar build.gradle
1个回答
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)解析它们。我不确定你是否这样做,但问题表明你不是。

© www.soinside.com 2019 - 2024. All rights reserved.