Gradle 执行一个梯度任务

Gradle 执行一个梯度任务,gradle,Gradle,我有两个任务: war { webInf { from 'src/main/resources/WEB-INF' } manifest { attributes 'Implementation-Version': versioning.info.display } } task createDemoWar(type: War, dependsOn: classes) { archiveName "webapi-demo-${versioning.

我有两个任务:

war {
    webInf { from 'src/main/resources/WEB-INF' }
    manifest {
        attributes 'Implementation-Version': versioning.info.display
    }
}

task createDemoWar(type: War, dependsOn: classes) {
    archiveName "webapi-demo-${versioning.info.display}.war"
    destinationDir = file("$buildDir/dist")
    copy {
        from 'scopes'
        include 'configuration.demo.properties'
        into 'src/main/resources/'
    }
}

task createDevelopmentWar(type: War, dependsOn: classes) {
    archiveName "webapi-dev-${versioning.info.display}.war"
    destinationDir = file("$buildDir/dist")
    copy {
        from 'scopes/'
        include 'configuration.development.properties'
        into 'src/main/resources/'
    }
}
这两个任务都试图将属性文件从
scopes
文件夹复制到
src/main/resources/
文件夹

我只运行一个任务,但是在
src/main/resources/
中复制了两个文件(
configuration.demo.properties
configuration.development,properties


有什么想法吗?

您在配置阶段使用了两个复制规范(注意,在这种情况下,复制规范不会配置您的任务,但会在其配置中添加一些额外的操作)。这意味着您的文件会在配置期间被复制。这都是因为:

copy {
    ...
}
您必须在执行期间运行它,为此,请尝试将其移动到
doLast
doFirst
闭包中,就像这样(对于这两个任务):


在这种情况下,只有在执行任务之前,才会复制文件。

这种行为真的很奇怪,不是吗?我不知道配置执行…阶段。你能给我一些链接,让我了解一下吗?一开始可能有点奇怪,但后来你意识到了,这是真的非常清楚。您可以在官方用户指南中阅读有关构建生命周期的内容,谢谢。不过,我有一个任务类似于:
task createDists(dependsOn:[createDemoWar,createDevelopmentWar])
。当我运行这个
createDists
任务时,会生成两个war,但是任何文件都在
src/main/resources
task createDemoWar(type: War, dependsOn: classes) {
    archiveName "webapi-demo-${versioning.info.display}.war"
    destinationDir = file("$buildDir/dist")
    doFirst {
        copy {
            from 'scopes'
            include 'configuration.demo.properties'
            into 'src/main/resources/'
        }
    }
}