我需要经历很多困难才能得到一个有效的配置,但是我有一个有效的配置。
首先,为了避免默认编译/进程资源任务失败,我将Java和资源SRCCDRE设置为零。然后我发现war插件并不关心您在源集中配置了什么——它总是使用相同的文件夹来处理事情——所以调试和发布构建/资源共享相同的构建路径。而且war插件也不会从依赖项中获取信息,所以为了获得其中一个jdbc包装器的调试实现,我必须包含一个“调试”配置
sourceSets {
// override the main, telling gradle main has no sources.
main {
java { srcDirs = [] }
resources { srcDirs = [] }
}
// debug builds
debug {
java {
compileClasspath += main.output
runtimeClasspath += main.output
// combine code from main and debug java code
srcDirs = ['src/debug/java', 'src/main/java']
}
// combine resources
resources {
srcDirs = ['src/debug/resources', 'src/main/resources']
}
// override the resources and classes output, for compatibility with the war plugin
output.resourcesDir = 'build/resources/main'
output.classesDir = 'build/classes/java/main'
}
// release builds
release {
java {
compileClasspath += main.output
runtimeClasspath += main.output
// combine code from main and release java code
srcDirs = ['src/release/java', 'src/main/java']
}
// combine resources
resources {
srcDirs = ['src/release/resources', 'src/main/resources']
}
// override the resources and classes output, for compatibility with the war plugin
output.resourcesDir = 'build/resources/main'
output.classesDir = 'build/classes/java/main'
}
}
task debugWar(type: War, group: 'Build') {
classifier 'SNAPSHOT'
from sourceSets.debug.output
// add the debug dependencies
classpath configurations.debug
}
task releaseWar(type: War, group: 'Build') {
from sourceSets.release.output
}