【问题标题】:Gradle Plugin Execution OrderGradle 插件执行顺序
【发布时间】:2016-02-20 23:56:24
【问题描述】:

我已经写了这个 gradle 文件

group 'com.abhi'
version '1.0-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'org.flywaydb.flyway'

sourceCompatibility = 1.8

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.flywaydb:flyway-gradle-plugin:3.2.1'
        classpath 'org.jooq:jooq-codegen:3.7.1'
        classpath 'com.h2database:h2:1.4.177'
    }
}

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'org.jooq', name: 'jooq', version: '3.7.1'
    compile group: 'org.jooq', name: 'jooq-meta', version: '3.7.1'
    compile group: 'org.jooq', name: 'jooq-codegen', version: '3.7.1'
    runtime group: 'com.h2database', name: 'h2', version: '1.4.177'
}

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

def writer = new StringWriter()
def xml = new groovy.xml.MarkupBuilder(writer)
        .configuration('xmlns': 'http://www.jooq.org/xsd/jooq-codegen-3.7.0.xsd') {
    jdbc() {
        driver('org.h2.Driver')
        url('dbc:h2:file:target/foobar')
        user('sa')
        password('')
    }
    generator() {
        database() {
        }
        generate() {
        }
        target() {
            packageName('com.abhi.jooq.models')
            directory('src/main/java')
        }
    }
}

// Run the code generator
// ----------------------
org.jooq.util.GenerationTool.generate(
        javax.xml.bind.JAXB.unmarshal(new StringReader(writer.toString()), org.jooq.util.jaxb.Configuration.class)
)

当我说gradle compile 时,它会引发异常

Could not load schemata
java.lang.NullPointerException
    at org.jooq.impl.MetaImpl.meta(MetaImpl.java:120)
    at org.jooq.impl.MetaImpl.getCatalogs(MetaImpl.java:143)
    at org.jooq.impl.MetaImpl.getSchemas(MetaImpl.java:168)
    at org.jooq.util.jdbc.JDBCDatabase.getSchemasFromMeta(JDBCDatabase.java:135)
    at org.jooq.util.jdbc.JDBCDatabase.getSchemata0(JDBCDatabase.java:124)
    at org.jooq.util.AbstractDatabase.getSchemata(AbstractDatabase.java:279)

我认为问题在于脚本底部的代码在“flyway”插件之前执行很多。

有没有办法保证下面的代码只有在flyway插件执行后才执行?

【问题讨论】:

  • 您的 jOOQ 代码生成插件似乎没有正确配置连接。你能展示一下那个配置吗?

标签: gradle flyway jooq


【解决方案1】:

是的,如果您认为问题出在执行顺序上,那么您可以修改它,就像处理任何其他任务一样。查看flyway plugin 的文档。根据它,这个插件为您的构建脚本添加了一些额外的任务,其中一个任务是:flywayMigrateflywayClean 等。您可以根据以下任务(使用dependsOn 选项)制作任何任务插件并使其在插件工作完成后立即运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多