如何运行liquibase的gradle任务&x201E;滴落球&x201C;两次?

如何运行liquibase的gradle任务&x201E;滴落球&x201C;两次?,gradle,liquibase,Gradle,Liquibase,我们正在使用liquibase、gradle和com.augusttechgroup:gradle liquibase插件。我们目前正面临这个错误 这会杀死我们的continuoes集成服务器。在解决此问题之前,我们希望使用一种变通方法,以便可以在gradle中运行“dropAll”任务两次 gradle dropAll dropAll 不起作用,而且 gradle dropAll && gradle dropAll 没有选择,因为我们的continuos集成服务器无法管理此

我们正在使用liquibase、gradle和com.augusttechgroup:gradle liquibase插件。我们目前正面临这个错误 这会杀死我们的continuoes集成服务器。在解决此问题之前,我们希望使用一种变通方法,以便可以在gradle中运行“dropAll”任务两次

gradle dropAll dropAll
不起作用,而且

gradle dropAll && gradle dropAll
没有选择,因为我们的continuos集成服务器无法管理此功能


有没有办法让一个任务运行两次,或者我必须使用gradle插件编写我自己的dropAll任务,就像这里建议的@judoole一样?

gradle确保每个任务在每次gradle调用中最多执行一次。如果你需要做两次工作,你需要声明两个任务。插件可能提供了一个SuiteAB用于声明第二个
dropAll
任务的le任务类型。

Gradle确保每个任务在每次Gradle调用中最多执行一次。如果需要执行两次某些工作,则需要声明两个任务。插件可能为您声明第二个
dropAll
任务提供了合适的任务类型。

Gradle确保每个任务在每次Gradle调用中最多执行一次。如果您需要执行两次某些工作,则需要声明两个任务。插件可能为您提供了合适的任务类型,以便您声明第二个
dropAll
任务。

Gradle确保每个任务在每次Gradle调用中最多执行一次。如果你需要做两次工作,你需要声明两个任务。很可能插件提供了一个合适的任务类型来声明第二个<代码> DropALL < /Case>任务。

< P>我会考虑使用JavaExcel,就像链接的StaskOp溢出问题,特别是如果你只使用XML而不是Groovy编写你的变更日志。quibase gradle插件就是您描述的这些奇怪的例子。来自Github repo:

假设对于每个部署,您都需要更新数据 为应用程序的数据库建模,并且我们还需要运行一些 用于安全的单独数据库中的SQL语句

现在我没有使用插件,因为我不需要这些功能。但是我在liquibase中遇到了错误,需要使用一个特殊的版本,即3.0.4,因为generateChangelog从3.0.5开始就有一个奇怪的错误。使用JavaExec版本,我能够找到一个适合我需要的版本

现在,liquibase gradle插件不一定是你唯一的选择。gradle有足够的空间来编写你自己的小任务。还有那些执行sql的人。也许可以尝试以下方法,看看是否有效:

configurations {    
    driver
}

dependencies {
    driver '<your-sql-driver>'
}

//"Bug" in Gradle. Groovy classes are loaded first. They need to know about sql driver
//Or I think it's still so
URLClassLoader loader = GroovyObject.class.classLoader
configurations.driver.each { File file ->
    loader.addURL(file.toURL())
}

task deleteFromTables(description: 'Deletes everything.') <<{
    def props = [user: "<username>", password: "<password>", allowMultiQueries: 'true'] as Properties
    def sql = Sql.newInstance("<url>", props, "<driver-classname>)

    try {
        //Here you can do your magic. Delete something, or simple drop the database.
        //After dropping it, you'd probably want another task for creating 
        //it back up again
        sql.execute("DELETE ...")
    } finally {
        sql.close()
    }
}
配置{
司机
}
依赖关系{
司机“
}
//Groovy类首先被加载。它们需要了解sql驱动程序
//或者我觉得还是这样
URLClassLoader=GroovyObject.class.classLoader
configurations.driver.each{File文件->
loader.addURL(file.toURL())
}

任务删除表(描述:“删除所有东西”)

我会考虑使用JavaExcel,就像链接的StaskOp溢出问题,特别是如果你只使用XML而不是Groovy编写你的变更日志。LIQueBASE GADLE插件的美丽就是你描述的这些奇怪的例子。 假设对于每个部署,您都需要更新数据 为应用程序的数据库建模,并且我们还需要运行一些 用于安全的单独数据库中的SQL语句

现在我没有使用插件,因为我不需要这些功能。但是我在liquibase中遇到了错误,需要使用一个特殊的版本,即3.0.4,因为generateChangelog从3.0.5开始就有一个奇怪的错误。使用JavaExec版本,我能够找到一个适合我需要的版本

现在,liquibase gradle插件不一定是你唯一的选择。gradle有足够的空间来编写你自己的小任务。还有那些执行sql的人。也许可以尝试以下方法,看看是否有效:

configurations {    
    driver
}

dependencies {
    driver '<your-sql-driver>'
}

//"Bug" in Gradle. Groovy classes are loaded first. They need to know about sql driver
//Or I think it's still so
URLClassLoader loader = GroovyObject.class.classLoader
configurations.driver.each { File file ->
    loader.addURL(file.toURL())
}

task deleteFromTables(description: 'Deletes everything.') <<{
    def props = [user: "<username>", password: "<password>", allowMultiQueries: 'true'] as Properties
    def sql = Sql.newInstance("<url>", props, "<driver-classname>)

    try {
        //Here you can do your magic. Delete something, or simple drop the database.
        //After dropping it, you'd probably want another task for creating 
        //it back up again
        sql.execute("DELETE ...")
    } finally {
        sql.close()
    }
}
配置{
司机
}
依赖关系{
司机“
}
//Groovy类首先被加载。它们需要了解sql驱动程序
//或者我觉得还是这样
URLClassLoader=GroovyObject.class.classLoader
configurations.driver.each{File文件->
loader.addURL(file.toURL())
}

任务删除表(描述:“删除所有东西”)

我会考虑使用JavaExcel,就像链接的StaskOp溢出问题,特别是如果你只使用XML而不是Groovy编写你的变更日志。LIQueBASE GADLE插件的美丽就是你描述的这些奇怪的例子。 假设对于每个部署,您都需要更新数据 为应用程序的数据库建模,并且我们还需要运行一些 用于安全的单独数据库中的SQL语句

现在我没有使用插件,因为我不需要这些功能。但是我在liquibase中遇到了错误,需要使用一个特殊的版本,即3.0.4,因为generateChangelog从3.0.5开始就有一个奇怪的错误。使用JavaExec版本,我能够找到一个适合我需要的版本

现在,liquibase gradle插件不一定是你唯一的选择。gradle有足够的空间来编写你自己的小任务。还有那些执行sql的人。也许可以尝试以下方法,看看是否有效:

configurations {    
    driver
}

dependencies {
    driver '<your-sql-driver>'
}

//"Bug" in Gradle. Groovy classes are loaded first. They need to know about sql driver
//Or I think it's still so
URLClassLoader loader = GroovyObject.class.classLoader
configurations.driver.each { File file ->
    loader.addURL(file.toURL())
}

task deleteFromTables(description: 'Deletes everything.') <<{
    def props = [user: "<username>", password: "<password>", allowMultiQueries: 'true'] as Properties
    def sql = Sql.newInstance("<url>", props, "<driver-classname>)

    try {
        //Here you can do your magic. Delete something, or simple drop the database.
        //After dropping it, you'd probably want another task for creating 
        //it back up again
        sql.execute("DELETE ...")
    } finally {
        sql.close()
    }
}
配置{
司机
}
依赖关系{
司机“
}
//Groovy类首先被加载。它们需要了解sql驱动程序
//或者我觉得还是这样
URLClassLoader=GroovyObject.class.classLoader
configurations.driver.each{File文件->
loader.addURL(file.toURL())
}

任务删除表(描述:“删除一切”)我会考虑使用javaExcel,像链接的StasOp溢出问题,特别是如果你只使用XML而不是Groovy编写你的转换文件