如何在gradle中复制文件?
我正试图将战争档案部署到Tomcat中。以下是我编写的构建脚本:如何在gradle中复制文件?,gradle,groovy,Gradle,Groovy,我正试图将战争档案部署到Tomcat中。以下是我编写的构建脚本: apply plugin : 'war' task deploy (dependsOn: war){ copy { from "build/libs" into "E:/apache-tomcat-8.0.14/webapps" include "*.war" } } 但它没有效果。webapps的根目录中没有war。渐变输出: :compileJava UP-T
apply plugin : 'war'
task deploy (dependsOn: war){
copy {
from "build/libs"
into "E:/apache-tomcat-8.0.14/webapps"
include "*.war"
}
}
但它没有效果。webapps
的根目录中没有war
。渐变输出:
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:war
:deploy
怎么了
请不要向我推荐任何tomcat cargo插件。我只想知道如何修复特定的文件复制任务。任务中的代码在配置阶段运行,而不是在执行阶段运行。因此,它在战争任务完成之前就运行了。任务应该是这样的
task deploy (dependsOn: war) << {
...
}
或者,更好的做法是,不要定义在执行时以命令式方式进行复制的任务,而是将任务设置为复制任务,并对其进行配置:
task deploy (dependsOn: war, type: Copy) {
from "build/libs"
into "E:/apache-tomcat-8.0.14/webapps"
include "*.war"
}
如果需要从单个源复制到多个目标,也可以尝试以下操作:
task deploy (dependsOn: war, type: Copy) {
// define your multiple directories
def multipleDest = ["$buildDir/libs/folder1", "$buildDir/libs/folder2", "$buildDir/libs/folder3"]
// get the output dirs
multipleDest.each { outputDir ->
outputs.dir outputDir
}
// copy to all of them
doLast {
multipleDest.each { outputDir ->
copy {
from "$buildDir/*.war"
into outputDir
}
}
}
}
task deploy (dependsOn: war, type: Copy) {
// define your multiple directories
def multipleDest = ["$buildDir/libs/folder1", "$buildDir/libs/folder2", "$buildDir/libs/folder3"]
// get the output dirs
multipleDest.each { outputDir ->
outputs.dir outputDir
}
// copy to all of them
doLast {
multipleDest.each { outputDir ->
copy {
from "$buildDir/*.war"
into outputDir
}
}
}
}