java - Gradle 复制命令已弃用,会破坏构建

标签 java gradle

在 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/

相关文章:

java - 使用静态内部类时构建错误

jboss - Gradle - 如何从神奇的缓存中提取依赖项?

android - 尝试将 Android 组件放入库时出现 ClassNotFoundException

android - 顶级 build.gradle 文件中的 ext 属性

java - 重写clone()方法时,为什么需要将其声明为public?

java - 使用QuickBooks Web Connector的身份验证问题:对象引用未设置为对象的实例

java - 我在霍夫曼编码 java 中遇到一些逻辑错误

java - 加载 webview 时错误膨胀类 android.webkit.WebView

Android Studio 构建错误 : manifestMergerXXXX?

java - Spring-boot部署错误: java. lang.IllegalStateException:无法获取嵌套存档