在 Gradle 3.x 中,我能够通过以下 block 在 build/jar 之前将一些 xml 映射文件复制到类目录中:
copy{
from 'src/main/java/com/company/mapping'
into 'build/classes/main/java/com/company/mapping'
include '**/*.xml'
}
在 Gradle 4.9 中,这已被弃用,取而代之的是:
task copyMappings(type: Copy){
from 'src/main/java/com/company/mapping'
into 'build/classes/main/java/com/company/mapping'
include '**/*.xml'
}
copyMappings 任务成功,但 build/jar 不等待 copyMappings 完成。我尝试过 build.dependsOn 和 doFirst{ copyMappings } doLast{ build } 的变体,但似乎没有什么能让我达到将复制的文件放在 jar 之前的“into”路径中的预期效果。 这是适用于 Windows 10 的。
最佳答案
这对我在 Mac OS 上使用 Gradle 4.9 有效:
apply plugin: 'java'
task copyMappings(type: Copy) {
from 'src/main/java/com/company/mapping'
into 'build/classes/main/java/com/company/mapping'
include '**/*.xml'
}
jar.dependsOn copyMappings
jar.doFirst {
assert new File("${projectDir}/build/classes/main/java/com/company/mapping/abc.xml").exists()
assert new File("${projectDir}/build/classes/main/java/com/company/mapping/def.xml").exists()
}
命令行是gradle clean jar
关于java - Gradle 复制命令已弃用,会破坏构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51657445/