如何获取jar任务以在gradle中包含单个依赖项

时间:2016-01-18 17:44:12

标签: java gradle

我有一个看起来像这样的任务(这不是这个模块开出的主要jar,还有一个我无法展示的)

task interfaceJar(type: Jar) {
    classifier = 'interface'

    from "$buildDir/classes/main/"

    include 'x/y/z/stuff.class'
}

还有一些像这样的依赖

dependencies {
    /* lots of dependencies */
    compile 'com.esotericsoftware:kryo:3.0.3'
}

如何在interfaceJar任务中包含一个特定的依赖项?

1 个答案:

答案 0 :(得分:2)

要包含依赖jar而不先解压缩它:(注意:如果你使用它,你可能想在你的清单中添加一个Class-Path条目)

task interfaceJar(type: Jar) {
    classifier = 'interface'

    from "$buildDir/classes/main/"
    from configurations.compile.findAll{it.name.contains('kryo')}

    include 'x/y/z/stuff.class'
    include '*.jar'
}

编辑:解压缩依赖jar并将内容包含在接口jar中:

task interfaceJar(type: Jar) {
    classifier = 'interface'
    from("$buildDir/classes/main/"){
        include 'stuff.class'
    }

    configurations.compile.findAll{it.name.contains('kryo')}.each{
        from(it.isDirectory() ? it : zipTree(it))
    }
}
相关问题