【问题标题】:How to know the gradle process has ended?如何知道 gradle 进程已经结束?
【发布时间】:2020-04-02 14:23:08
【问题描述】:

我想获取 gradle 运行过程,我可以在其中知道 gradle 任务已经结束。 我正在我的机器上并行执行 gradle 任务,如下所示。

在 Windows 中,

start gradlew runSuite1 -i --rerun-tasks
start gradlew runSuite1 -i --rerun-tasks

在 Mac 中,

 ./gradlew runSuite1 -i --rerun-tasks &
 ./gradlew runSuite2 -i --rerun-tasks &

它将并行触发所有 gradle 操作。

我想在所有这些 gradle 任务结束后执行一项操作。

如何知道这些gradle运行过程使用java什么的?

提前致谢

【问题讨论】:

    标签: java shell gradle process automation


    【解决方案1】:

    您可以在 Bash 中使用命令 wait

    ./gradlew runSuite1 -i --rerun-tasks &
    pids[0]=$!
    
    ./gradlew runSuite2 -i --rerun-tasks &
    pids[1]=$!
    
    for pid in ${pids[*]}; do
        wait $pid
    done
    

    更多信息请参见this answer

    【讨论】:

    • 有没有办法在批处理文件中做到这一点,我试过但它非常复杂,找不到任何解决方案。它不像 shell 脚本那样工作。
    【解决方案2】:

    我建议依靠对parallelism inside Gradle 本身的支持。这将使您的体验更加轻松。

    除非runSuite1runSuite2 在同一个项目中,否则最近的 Gradle 版本将并行执行它们。注册a task that depends on 这两个任务并执行您需要的操作变得微不足道。

    如果 runSuite1runSuite2 是并行的,并且它们的执行时间确实会从并行运行中受益,那么看看您是否可以将其中一个任务移至不同的项目。

    【讨论】:

    • 目的主要是在所有任务都在单个项目下的情况下并行运行程序。感谢您的建议@Louis Jacomet
    猜你喜欢
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多