从另一个 gradle 任务访问变量

Access variable from another gradle task

提问人:niranjan pb 提问时间:11/10/2023 更新时间:11/10/2023 访问量:20

问:

我有 2 个任务,我想从依赖任务访问变量,但它给出了 null 值

task test1(type: Exec) {
    doFirst {
      def serviceUrl = "dummyUrl"
      rootProject.ext["serviceUrl"] = serviceUrl
    }
    commandLine "echo", "test1"
}

task test2(type: Exec) {
    dependsOn("test1")
    def serviceUrl = ""
    doFirst {
      serviceUrl = rootProject.findProperty("serviceUrl")
      println("serviceUrl isssss $serviceUrl")
    }
    commandLine "echo","ur ----${serviceUrl}"
}

commandLine “echo”,“你的----${serviceUrl}”这里的服务url是空的, 在doFirst中,我能够打印该值,但是它在commandLine中变得空,一旦我获得serviceUrl值,最后需要执行此commandLine任务。

我试图将commandLine放在doLast块中,但它给出了exec==null值, 还尝试添加一些虚拟的 commandLine 语句,并将 commandLine “echo”,“your ----${serviceUrl}” 保留在 doLast 块中,但该 commandLine 根本没有执行。

gradle groovy build.gradle gradlew gradle-kotlin-dsl

评论

1赞 tim_yates 11/10/2023
你真的应该避免做这种事情。在上面的示例中,任务正在做 2 件事。它正在运行一个命令,并且(作为副作用)试图修改全局状态。我想会是任何事情的结果吗?(否则,您不妨直接设置)在这种情况下,您应该将 的输出自行写入 build 目录内新文件夹中的新文件。这可以是任务的输出,然后可以将此输出用作输入。你有更好的例子吗?test1serviceUrltest1serviceUrlgradle.propertiestest1test2

答: 暂无答案