1

我有 Gradle JAR(主)项目。我有其他 commons-io jars(依赖),我想将它们与 Main JAR 一起打包。我在下面尝试过,但是当我反编译 Main JAR 时,我看到 libs 文件夹中的所有依赖 JARS 都带有 .jar 扩展名。

jar {
    from("$projectDir") {
        include 'libs/**'
    }
}

我想要的是从所有依赖 JAR 到 Main JAR 的类文件。我这样做是因为 Main JAR 将被多个项目使用。这样一来,我就不必包含所有依赖的 JAR。

谢谢

4

2 回答 2

2

据我所知,你不能像那样把其他罐子装进一个罐子里。您需要做的是提取所有 jar 并将内容打包到单个文件中。

下面的一段代码为声明的依赖项准备了这样的 jar

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.google.guava:guava:16.0.1'
    compile 'com.google.inject:guice:3.0'
}

task fatJar(type: Jar, dependsOn: jar) {
  baseName = project.name + '-fat'
  deps = configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) }
  from(deps) { 
    exclude 'META-INF/MANIFEST.MF'
  }
}
于 2014-04-05T07:53:44.167 回答
-1

用这个。

into(libForderName){
        from {
            configurations.compile.collect {
                it.isDirectory() ? it : it.getAbsoluteFile()
            }
        }
    }
于 2017-06-09T06:19:21.017 回答