gpt4 book ai didi

gradle - Gradle 3.3中任务执行顺序错误

转载 作者:行者123 更新时间:2023-12-03 04:01:02 25 4
gpt4 key购买 nike

我想在脚本文件中定义方法,并使用它们为每个项目个体(自定义库)定义构建任务。

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

如您所见,我所要做的就是创建一个自定义库,其中将包含用于为每个项目创建任务的方法。但是目前我无法在不破坏构建的情况下导入这些方法。仅在将war文件添加到构建目录中之后,方法 buildDockerImage才有效,因此该任务只能按需执行,我不想一直包含在此过程中。

我的问题:
  • 如何使我的任务仅在手动执行任务时才运行
  • 为什么在执行构建时,脚本首先执行?
  • 最佳答案

    您的任务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")
    }
    }

    Read This article

    这可能有帮助

    关于gradle - Gradle 3.3中任务执行顺序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42123014/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com