如何生成一个包含内部依赖关系和外部依赖关系作为外部jar的jar?

时间:2016-02-15 09:50:00

标签: java gradle

我有一个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 - >番石榴作为外部库

我不知道如何做到这一点。

2 个答案:

答案 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(因此它只包含依赖项)。这可能不是最好的方式,但它很简单并且有效。