java - 撤消自定义 jar 任务中的文件排除
问题描述
我的 Gradle 文件中有一项特殊任务,用于创建可执行(或胖)jar。这个 jar 需要包含一个 slf4j 日志实现,以便在用户运行 jar 时会有一些输出。因此,我希望将 logback jar 和配置文件包含在可执行 jar 中。但是,我不希望其中任何一个出现在内置jar
任务的输出中。
我能够在可执行 jar 中专门包含 logback 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
任务中?
解决方案
推荐阅读
- microservices - 为什么消费者必须在尤里卡服务器上注册?
- sql-server - 以后出现错误时,看不到预期的 PRINT 或 RAISERROR 输出
- python - (Django,Python)如何修复 json.decoder.JSONDecodeError?
- ios - WKWebView 中的蒙版图像受 CORS 限制
- mysql - 如何在 SQL 中创建两个连续的 Group By
- pygame - Pygame 错误'pow 预期 2 个参数,得到 1'
- ios - 打开动态链接时如何重定向到某个屏幕?
- android - 无法在空对象上调用方法 doFirst():react.gradle
- node.js - 从连接表中选择列 - TypeOrm
- ios - Swift 2D 阵列性能