gradle mysql,使用gradle和flyway插件创建MySQL模式

我们在项目中使用gradle来构建一个多存储库项目.由于它是在Jenkins构建服务器上自动构建和测试的,因此我们需要设置和拆除数据库.

我对持续集成最佳实践的理解是,我们只需按一下按钮即可设置和拆除测试数据库.即使这还不存在.所以我想要一个gradle任务,如果它还不存在,只需在MySQL中创建一个数据库.

浏览这个很好的网站,当我被指向使用Gradle的flyway插件时,我以为我找到了答案.从版本2.1(http://java.dzone.com/announcements/flyway-21-released-automatic)开始,flyway确实支持自动模式创建,所以应该可以使用插件,如果不是的话?

但是,如果我运行gradle flywayInit或gradle flywayClean,每次我收到消息未知数据库时都使用url =’jdbc:mysql://127.0.0.1:3306 / test’这样的url:test.所以我尝试了以下方法:

buildscript {

repositories {

mavenCentral()

}

dependencies {

classpath 'org.flywaydb:flyway-gradle-plugin:3.0'

}

}

// Use Flyway plugin to create database

apply plugin: 'flyway'

flyway {

user = 'root'

password = 'root'

url = 'jdbc:mysql://127.0.0.1:3306'

schemas = ['test']

}

我本来期望另一个连接错误.相反,构建是成功的,但没有创建数据库架构.如何使用gradle和Flyway创建架构?如果我们可以在没有Flyway的情况下做到这一点也很好.

更新:

事实证明这很好用.我正在查看我的数据库模式列表的过时版本.显然,Sequel Pro在刷新时更新模式列表太愚蠢了.或者我太傻了,无法在Sequel pro中找到合适的按钮.

更新2:

为了确保每次构建都会发生这种情况,我将以下行添加到build.gradle:

// Add dependencies to tasks

build.dependsOn flywayInit

解决方法:

我使用的是gradle 2.2,build.gradle文件是:

buildscript {

repositories {

mavenCentral()

}

dependencies {

classpath 'mysql:mysql-connector-java:5.1.34'

classpath 'org.flywaydb:flyway-gradle-plugin:3.1'

}

}

apply plugin: 'flyway'

apply plugin: 'java'

flyway {

url = 'jdbc:mysql://localhost:3306'

user = 'root'

password = 'root'

schemas = ['demo1']

}

之后,运行gradle flywayMigrate -i.如果数据库不存在,将由flyway创建.

您可以在此处查看Flyway任务列表:link

标签:mysql,jenkins,gradle,flyway

来源: https://codeday.me/bug/20190830/1765946.html

你可能感兴趣的:(gradle,mysql)