Gradle-如何从可执行jar中排除资源?
我在src/main/resources下有一个“生产”logback配置文件logback.xml。。。但该目录还包含“testing”logback配置文件logback-test.xml(logback首先查找该文件) 创建可执行jar时,我想删除“测试”xml文件 我试过这个Gradle-如何从可执行jar中排除资源?,gradle,jar,logback,Gradle,Jar,Logback,我在src/main/resources下有一个“生产”logback配置文件logback.xml。。。但该目录还包含“testing”logback配置文件logback-test.xml(logback首先查找该文件) 创建可执行jar时,我想删除“测试”xml文件 我试过这个 jar { manifest { // PS this is the correct line for Shadow Plugin... attributes 'Class-
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*")
}
}
。。。我做错了什么
以后
我发现将这些XML放在/src/main/resources下可能会让我的生活变得困难。。。因此,我在src下创建了一个新目录/logback,并将文件放在其中。我通过以下操作将其添加到类路径(正如logback所说,它在其中查找这些文件):
test {
classpath += files( 'src/logback' )
}
有趣的是,这意味着测试期间的日志记录是正常的,这足以让生成的可执行jar在运行时使用logback OK
不幸的是,像这样配置“shadowJar”任务
shadowJar {
baseName = 'DocumentIndexer'
classifier = null
version = project.version
exclude("logback/*test*")
}
或者像这样配置“jar”任务
:
jar {
manifest {
attributes 'Class-Path': '/libs/a.jar'
attributes 'Main-Class': 'core.ConsoleIOHandler'
}
exclude("logback/*test*")
}
。。。只是拒绝工作:logback-test.xml文件仍然在jar中。我从gradle.org的论坛上获得
基本答案是,“test”logback配置文件应该放在src/test/resources下,“production”配置文件应该放在src/main/resources下。这样,前者将被排除在jar之外
回答者还说“资源”是指定相对路径的根之一。我从gradle.org的论坛上得到
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] // ***
}
基本答案是,“test”logback配置文件应该放在src/test/resources下,“production”配置文件应该放在src/main/resources下。这样,前者将被排除在jar之外
回答者还说,“资源”是指定相对路径的根之一
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] // ***
}
如上所述
第***行是告诉shadow在jar中包含哪些依赖项的方法
如上所述
第***行是告诉shadow在jar中包含哪些依赖项的方法