2017-03-23 17 views
0

私はまだので、私容赦下さいGradleのまわりで私の頭をラップしようとしています。Gradleのリフレッシュにフライウェイの移行を実行すると、

私は、コマンドラインコマンドを実行する代わりに、すべてのgradle refresh/buildで自動的に実行するようにflywayの移行を設定しようとしています。したがって、新しいマイグレーションを含む最新の変更を誰かが引き出しているときに、ローカルdbが最新のものになります。

私は、ルートディレクトリにこのbuild.gradeを持っている:私はフライウェイから行をマージしようとした

buildscript { 
    ... 
    repositories { 
     mavenLocal() 
     mavenCentral() 
} 

allprojects { 
    ... 
} 

project(":core") { 
    apply plugin: "java" 

    dependencies { 
     compile project(":shared") 
    } 
} 

project(":server") { 
    apply plugin: "java" 

    dependencies { 
     compile project(":shared") 
    } 
} 

project(":shared") { 
    apply plugin: "java" 
} 

tasks.eclipse.doLast { 
    delete ".project" 
} 

は、ページを始めます。

基本的には、build.gradleファイル内から$ gradle flywayMigrate -iコマンドを実行します。私はbuild.finalizedBy(flywayMigrate)で試したが、役に立たなかった。

は、どのように私はそのようなことをしますか?

ありがとうございます!

答えて

1

を確定するにはflywayMigrategradle buildを実行する必要があります。

flywayMigrateを実行するには、defaultTasksを使用します。それ以外の場合は、構成されたタスクが実行されます。だから、:それはbuild.gradle内から-i(ログレベル)を設定することになると

buildscript { 
    dependencies { 
     classpath 'com.h2database:h2:1.4.191' 
    } 
} 

plugins { 
    id "org.flywaydb.flyway" version "4.1.2" 
} 

flyway { 
    url = 'jdbc:h2:file:./target/foobar' 
    user = 'sa' 
} 

defaultTasks 'flywayMigrate' 

最新のGradleのバージョンでは不可能であると思われます。

+0

'println(getDefaultTasks())'行にデフォルトタスクがないことを示していますが、defaultTasksを追加すると、flywayMigrateがリストに表示されます。 –

+0

これは予想される動作です。次に 'gradle'を実行するだけで、移行が実行されます。それはあなたが探しているものですか? – Opal

+0

IDEが "gradle build"と言うプログラムを実行していますが、コマンドが実行されていません。 はIntelliJのでは、私は、「ビルド後に実行」のGradleビュー押しでタスクを右クリックすることができます。つまり、プログラムを実行するたびにタスクが実行されますが、その変更はもちろんローカルのみです。 –

関連する問題