我有一个Gradle项目,它取决于子项目。我想创造一个"胖罐"包含我所有的子项目,外部依赖项作为外部jar。
的build.gradle:
dependencies {
compile project(':MyDep1')
compile project(':MyDep2')
compile 'com.google.guava:guava:18.0'
}
我希望能够生成以下输出:
MyProject.jar
- >包括MyDep1& MyDep2
libs/guavaXXX.jar
- >番石榴作为外部库
我不知道如何做到这一点。
答案 0 :(得分:1)
使用不同的配置来保存内部和外部依赖关系,并将其中一个配置打包到项目工件中。
configurations{
internalCompile
externalCompile
}
//add both int and ext to compile
configurations.compile.extendsFrom(internalCompile)
configurations.compile.extendsFrom(externalCompile)
dependencies{
internalCompile project(':MyDep1')
internalCompile project(':MyDep2')
externalCompile 'com.google.guava:guava:18.0'
}
在你的胖子任务中,只包括internalCompile
答案 1 :(得分:0)
我终于使用了这个解决方案:
jar {
subprojects.each {
from files(it.sourceSets.main.output)
}
}
distributions {
main {
contents {
exclude subprojects.jar.archivePath.name
}
}
}
在我的项目jar中,我包含了所有子项目输出的内容。在分发中,我从子项目中排除了jar(因此它只包含依赖项)。这可能不是最好的方式,但它很简单并且有效。