Java Gradle 在一个任务中复制 2 个不同的文件夹

标签 java gradle

我在 intelliJidea 的 java 项目上使用 gradle-2.8。我需要将 2 个不同的资源复制到 2 个不同的文件夹中。

我试过:

task copySubprojectLibs (type: Copy, dependsOn: subprojects.jar) {
    from (subprojects.jar) {
        into 'build/libs/lib'
    }

    from ('src/main/resources') {
        into 'build/libs/nosr/conf'
    }
}

然后尝试:

task copySubprojectLibs (type: Copy, dependsOn: subprojects.jar) {
    from (subprojects.jar) into 'build/libs/lib'
    from ('src/main/resources') into 'build/libs/nosr/conf'
}

然后尝试删除 dependsOn、类型参数、重新排序行等,但我总是得到

> No value has been specified for property 'destinationDir'.

要将 2 个资源复制到 2 个不同的文件夹,我需要做什么?在一个任务或两个任务中,这个东西在两个任务中也不起作用。但是一行简单的复制和一项任务就可以了。如何在一项任务中做到这一点?这是一个简单的问题,为什么 gradle 这么棘手?

最佳答案

Copy task配置了 CopySpec , 它只允许一个目标目录。

改为考虑这种方法:

task copySubprojectLibsA (type: Copy, dependsOn: subprojects.jar) {
    from subprojects.jar 
    into 'build/libs/lib'
}

task copySubprojectLibsB (type: Copy, dependsOn: subprojects.jar) {
    from 'src/main/resources'
    into 'build/libs/nosr/conf'
}

task copySubprojectLibs(dependsOn: ["copySubprojectLibsA","copySubprojectLibsB"])

另一种方法是使用 Gradle 中包含的 Ant Builder:

task copySubprojectLibs (dependsOn: subprojects.jar) << {
    files(subprojects.jar).each { 
        ant.copy(file: it.absolutePath, todir: "build/libs/lib")
    }
    ant.copy(todir: "build/libs/nosr/conf") {
        fileset(dir: "src/main/resources")
    }
}

关于Java Gradle 在一个任务中复制 2 个不同的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39508246/

相关文章:

Gradle 项目,子项目重复执行

Gradle聚合任务

使用 Visa QRParser-2.2.0 和 minSdkVersion 19 的 Android 构建失败(transformClassesWithDesugar)

java - 无法在plugins {} block 中使用 'jsonschema2pojo' gradle插件?

java - 基于矩形的点搜索优化

java - 如何使用java和github api连接到github存储库

使用 gradle 更改 iml 文件的 Android Studio 导入项目

Java 属性更改监听器

javax.crypto.BadPaddingException : Given final block not properly padded

Java KeyListener.keyPressed 在按住键时多次触发