如何让 jar 任务在 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'
}

如何在我的接口 Jar 任务中包含该特定依赖项?

要包含依赖项 jar 而不先解压缩它:(注意:如果您使用它,您可能需要在清单中添加类路径条目)

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))
    }
}

最新更新