使用Gradle Task

时间:2016-05-25 15:46:10

标签: gradle liquibase

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

1。)将liquibase changeset运行到预定义的数据库中 2.)对数据库运行一些测试 3.)回滚使用上一个变更集进行的所有更改

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

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

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

同样,我无法通过命令行单独调用它们。我在Gradle中需要一个自定义任务,以便我可以调用类似的东西:

$ gradle runDatabaseTests

......我希望它可以做我期望的一切。

1 个答案:

答案 0 :(得分:1)

没有直接从另一个任务调用/调用任务的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

来控制它们的运行顺序