我想在我的脚本文件中定义方法,并使用它们为每个项目个体(自定义库)定义构建任务。
ext.buildDockerImage = { imageName ->
def distDir = "${getProject().getBuildDir()}/docker"
copy {
from "${project.getProjectDir()}/src/docker/"
into distDir
}
println 'Build docker image'
}
在我的项目build.gradle
中,我创建了一项任务:
apply plugin: "war"
apply plugin: "jacoco"
dependency {
// all dependencies
}
task buildDocker() {
apply from: "${project.getRootDir()}/docker/scripts.gradle"
buildDockerImage("admin")
}
问题在于,每当我运行gradle build
时,此任务也会执行:
$ gradle build -xtest
Build docker image
# rest of build
如您所见,我想要的只是创建一个自定义库来保存方法,用于为每个项目创建任务。但是目前我无法在不破坏构建的情况下导入这些方法。方法buildDockerImage
仅在将war文件添加到构建目录后才能工作,因此该任务必须仅按需执行,我不希望一直包含在该过程中。
我的问题:
答案 0 :(得分:1)
您的任务buildDocker()
定义了配置阶段的所有内容。因此,当您运行gradle构建时,它将始终运行。
task buildDocker() {
apply from: "${project.getRootDir()}/docker/scripts.gradle"
buildDockerImage("admin")
}
如果要将此任务作为独立任务运行,请在任务的执行阶段定义您的资料。类似下面的内容
task buildDocker() {
apply from: "${project.getRootDir()}/docker/scripts.gradle"
doLast{
buildDockerImage("admin")
}
}
这可能会有所帮助