2015-11-19 3 views
1

Я написал этот Gradle файлGradle Plugin Выполнение заказа

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) 

Я думаю, что проблема заключается в том, что код в нижней части сценария выполняет задолго до плагина «пролетного пути».

Есть ли способ, которым я могу гарантировать, что приведенный ниже код выполняется только после выполнения плагина пролетного пути?

+0

Похоже, что ваш плагин для создания кодов jOOQ был неправильно настроен с подключением. Не могли бы вы показать эту конфигурацию? –

ответ

1

Да, если вы предполагаете, проблема в порядке выполнения, то вы можете изменить его, как и любые другие задачи. Взгляните на документацию flyway plugin. В соответствии с этим этот плагин добавляет некоторые дополнительные задачи к вашему сценарию сборки, для одной задачи: flywayMigrate, flywayClean и т. Д. Вы можете сделать любую из ваших задач в зависимости (с параметром dependsOn) в заданиях, сформировать этот плагин и заставить их работать просто после завершения работы плагина.