我在src / main / resources下有一个“生产”logback配置文件logback.xml ...但该目录还包含“testing”logback配置文件logback-test.xml(首先查找logback)。 / p>
创建可执行jar时,我想删除“testing”xml文件。
我试过这个
jar {
manifest {
// PS this is the correct line for Shadow Plugin...
attributes 'Class-Path': '/libs/a.jar'
attributes 'Main-Class': 'core.MyMainClass'
}
exclude("**/resources/*test*")
}
我试过这个
jar {
manifest {
attributes 'Class-Path': '/libs/a.jar'
attributes 'Main-Class': 'core.MyMainClass'
}
doLast {
exclude("**/resources/*test*")
}
}
......我做错了什么?
稍后
我发现here我可能在将这些xmls放在/ src / main / resources下时让自己变得很难...所以我在src,/ logback下创建了一个新目录,并将文件放入相反。我通过这样做将此添加到类路径中(因为logback说它是查找这些文件的位置):
test {
classpath += files( 'src/logback' )
}
有趣的是,除了意味着测试期间的日志记录发生正常,这足以让生成的可执行jar在运行时使用logback OK。
不幸的是,像这样配置“shadowJar”task
shadowJar {
baseName = 'DocumentIndexer'
classifier = null
version = project.version
exclude("logback/*test*")
}
或像这样配置“jar”task
:
jar {
manifest {
attributes 'Class-Path': '/libs/a.jar'
attributes 'Main-Class': 'core.ConsoleIOHandler'
}
exclude("logback/*test*")
}
...只是拒绝工作:文件logback-test.xml仍然在jar中。
答案 0 :(得分:0)
我从gradle.org的论坛得到the answer。
基本答案是“test”logback配置文件应该在src / test / resources下,“production”配置文件应该在src / main / resources下。这样前者将被排除在罐子之外。
回答者还说“资源”是指定相对路径的根源之一。
答案 1 :(得分:0)
configurations {
provided
compile.extendsFrom provided
}
dependencies {
provided 'WHATEVER' // Packages you don't need to add to jar
provided 'Other WHATEVER' // Packages you don't need to add to jar
shadow 'OTHER' // Packages you need to add to jar
shadow 'Another OTHER' // Packages you need to add to jar
}
shadowJar {
configurations = [project.configurations.shadow] // ***
}
如here
line ***是告诉影子jar中要包含哪些依赖项的方法