gpt4 book ai didi

gradle - 使用Gradle Task中的参数调用Gradle命令和任务

转载 作者:行者123 更新时间:2023-12-03 03:21:07 28 4
gpt4 key购买 nike

我正在尝试理解build.gradle中的当前设置。我需要按照特定顺序执行许多任务,并通过一个任务调用执行所有任务。我想要的设置如下所示:

1.)将liquibase变更集运行到预定义的数据库中
2.)对数据库运行许多测试
3.)回滚使用先前变更集进行的所有变更

每次测试时,我都希望数据库处于“干净”状态。它应该只有我期望的更改,而没有其他更改。使用Gradle插件为其设置了liquibase,并应用/更新了变更集。但是,我不想手动调用该命令。这将需要在持续集成中运行,因此我需要编写脚本,因此我只需要CI调用一个任务,然后依次运行每个任务,直到结束。我不确定如何从自身内部(即在build.gradle文件内部)调用Gradle命令行任务,然后再将参数传递给它(因为我需要调用某种类型的回滚命令任务才能获取)数据库是调用更新之前的状态)。

现在,我正在做的就是这样调用命令行任务:

$ gradle update
$ gradle test
$ gradle rollbackToDate -PliquibaseCommandValue=2016-05-25

同样,我不能仅通过命令行来调用它们。我需要在Gradle中执行自定义任务,以便可以仅调用以下内容:
$ gradle runDatabaseTests

...而且我会让它做我期望的一切。

最佳答案

没有gradle方法可以直接从另一个任务调用/调用一个任务。相反,您可以使用dependsOnfinalizedBy设置任务依赖性,这将强制先执行prereq任务。

如果声明任务:

task runDatabaseTests(dependsOn: [update, test, rollbackToDate]) << {
println "I depend on update, test and rollbackToDate"
}

你打电话时
gradle runDatabaseTests -PliquibaseCommandValue=2016-05-25

它将首先强制更新,测试和rollbackToDate。您可以通过使用 mustRunAfter和/或 shouldRunAfter来控制它们的运行顺序(如果您对此有所关注)

关于gradle - 使用Gradle Task中的参数调用Gradle命令和任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37442018/

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