Gradle 如何将libs文件夹中的jar包含到另一个jar中?

Gradle 如何将libs文件夹中的jar包含到另一个jar中?,gradle,android-gradle-plugin,build.gradle,gradle-eclipse,Gradle,Android Gradle Plugin,Build.gradle,Gradle Eclipse,我有Gradle JAR(主)项目。我还有其他公用io JAR(依赖),我想将它们打包到主JAR中。我在下面做了尝试,但当我反编译主JAR时,我看到libs文件夹中所有的依赖JAR扩展名为.JAR jar { from("$projectDir") { include 'libs/**' } } 我想要的是从所有依赖JAR到主JAR的类文件。我这样做是因为主JAR将被多个项目使用。这样,我就不必包括所有依赖的jar 谢谢据我所知,你不能像那样把其他罐子装进一个罐

我有Gradle JAR(主)项目。我还有其他公用io JAR(依赖),我想将它们打包到主JAR中。我在下面做了尝试,但当我反编译主JAR时,我看到libs文件夹中所有的依赖JAR扩展名为.JAR

jar {
    from("$projectDir") {
        include 'libs/**'
    }
}
我想要的是从所有依赖JAR到主JAR的类文件。我这样做是因为主JAR将被多个项目使用。这样,我就不必包括所有依赖的jar


谢谢

据我所知,你不能像那样把其他罐子装进一个罐子里。您需要做的是提取所有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'
  }
}
用这个

into(libForderName){
        from {
            configurations.compile.collect {
                it.isDirectory() ? it : it.getAbsoluteFile()
            }
        }
    }

你的解决方案正是我所做的。正如我提到的,重新打包的JAR在一个文件夹“lib”中包含所有依赖的JAR。我不希望这样,因为我希望我的JAR用户能够使用依赖JAR.Hm.中的类。。就我所见,用这个脚本准备的
fat.jar
工件甚至没有
lib
文件夹。它包含所有重新打包的依赖项。