2016-05-25 18 views
1

私が理解しようとしているbuild.gradleに現在の設定があります。私は非常に特定の順序で離れて、1つのタスクコールですべてを実行するために、多くのタスクが必要です。Gradleタスクのパラメータを使用してGradleコマンドとタスクを呼び出す

は、私が欲しい前のチェンジセットで作られたすべての変更をロールバック)を実行しますが、事前に定義されたデータベース 2)データベース 3に対するテストの数を実行にチェンジセットをLiquiBaseを

1):私が欲しいのセットアップは、次のようになります私はそれをテストするたびにデータベースを「クリーン」状態にします。それは私が期待している変更だけで、他には何も変わらないはずです。 liquibaseはGradleプラグインで設定され、チェンジセットは適用/更新されます。しかし、私は手動でコマンドを呼びたくはありません。これは継続的な統合で実行する必要があるものなので、私はそれをスクリプト化する必要があるので、CIが1つのタスクを呼び出すだけで、それぞれのタスクが最後まで実行されます。私はGradleコマンドラインタスクを内部から(つまりbuild.gradleファイル内で)呼び出す方法がわからないので、パラメータを渡します(いくつかのタイプのロールバックコマンドタスクを呼び出す必要があるのでデータベースは更新を呼び出す前の状態になる)。

は今、私がやっているすべては、このようなコマンドラインタスクを呼び出すことです:

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

繰り返しますが、私は一人で、コマンドラインでそれらを呼び出すことはできません。 Gradle内でカスタムタスクが必要なので、次のように呼び出すことができます。

$ gradle runDatabaseTests 

...そして、私はそれがすべてのことを期待しています。

答えて

0

別のタスクから直接タスクを呼び出したり呼び出す方法はありません。代わりに、dependsOnまたはfinalizedByを使用してタスクの依存関係をセットアップして、前提条件のタスクを最初に実行させることができます。

タスクを宣言する場合:あなたは

gradle runDatabaseTests -PliquibaseCommandValue=2016-05-25 

はそれが最初の更新、テストおよびrollbackToDateを強制的に呼び出す

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

。あなたがそれを気にするならば、実行される順番を制御することができます。

+0

これは、タスクを実行する方法がないことです。コマンドライン)別のタスクから?これは私が使用しているコマンドの多くを自動化することを不可能にしています。 – CrystalBlue

+0

まあ、それは完全に真実ではありません。 Gradleのタスクは通常の機能に似ていないため、少し違った考えをする必要があります。あなたがしたいと思う何かを実装する方法があります。 ext変数の値を設定することができ、後続のタスクはext変数を使用することができます。 (グラデーションスクリプトで通常の関数を作成することもできます) – RaGe

関連する問題