将复制任务作为依赖项添加到现有 Gradle 任务

Adding copy task as dependency to existing Gradle task

我有一个具有以下目录结构的 Groovy 应用程序:

build.gradle
gradle.properties
settings.gradle
src/
    main/
        groovy/
            <Groovy code>
        resources/
            config.json
    test/

目前,当我 运行 gradle clean build shadowJar(使用 ShadowJar plugin 虽然我认为这与这里无关)我离开了带有位于 build/distributions 内的已编译的可执行 JAR。我想向我的 Gradle 文件添加一个任务,该任务还将 src/main/resources/config.json 文件复制到此 build/distributions 位置,理想情况下无需更改我的构建调用。

我试过这个:

task copyJson(type: Copy) {
    from('src/main/resources')
    into('build/distributions')
    include('config.json')
}

然而,这迫使我使用以下构建调用:gradle clean build shadowJar copyJson,这不是我想要的。

所以我问:如何向我的 Gradle 构建添加一个任务,这样 运行ning gradle clean build shadowJar 不仅在 build/distributions 下生成我的可执行 JAR,而且也将 src/main/resources/config.json 文件也复制到该位置?

只需添加

build.dependsOn copyJson

到您的 build.gradle 文件。请注意,如果构建应始终创建影子 jar,您还可以添加

build.dependsOn shadowJar

并使用 gradle build.

构建