自定义jar任务中的撤消文件排除

时间:2018-06-26 19:48:26

标签: java gradle

我在Gradle文件中有一个特殊任务,用于创建可执行(或胖)jar。这个jar需要包含一个slf4j日志记录实现,以便用户运行jar时会有一些输出。因此,我希望将logback jar和配置文件包含在可执行jar中。但是,我不希望其中任何一个出现在内置jar任务的输出中。

我能够在可执行jar中专门包括logb​​ack jar。但是,我无法从库jar中排除logback.xml文件,而不能在可执行jar中也不排除它。在fatjar任务中使用include("logback.xml")会导致输出jar仅包含XML文件,而没有其他内容!

这是到目前为止我的构建文件的相关部分:

dependencies {
    runtime group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
}

task fatJar(type: Jar) {
    manifest {
        attributes 'Main-Class': 'MyClass'
    }
    baseName = baseName + "-executable"
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    from { configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
    // include('logback.xml') //FAIL!
}

jar {
    // clients should configure slf4j themselves
    exclude('logback.xml')
}

如何将logback.xml从常规jar任务中排除,但将其包括在fatJar任务中?

0 个答案:

没有答案