Gradle 如何将libs文件夹中的jar包含到另一个jar中?
我有Gradle JAR(主)项目。我还有其他公用io JAR(依赖),我想将它们打包到主JAR中。我在下面做了尝试,但当我反编译主JAR时,我看到libs文件夹中所有的依赖JAR扩展名为.JARGradle 如何将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 谢谢据我所知,你不能像那样把其他罐子装进一个罐
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
文件夹。它包含所有重新打包的依赖项。