2015-10-29 4 views
2

По какой-то причине мне приходится вручную удалять сгенерированную папку и запускать задачу градиента, чтобы получить обновленные POJO. Это моя настройка, ожидаемое поведение или ошибка? Моя установка выглядит следующим образом:jOOQ Плагин Gradle не обновляет сгенерированные файлы

jooq { 
    library(sourceSets.main) { 
    jdbc { 
     driver = 'com.mysql.jdbc.Driver' 
     url = 'jdbc:mysql://localhost:3306/library' 
     user = 'library' 
     password = '123' 
     schema = 'library' 
    } 
    generator { 
     name = 'org.jooq.util.DefaultGenerator' 
     strategy { 
     name = 'org.jooq.util.DefaultGeneratorStrategy' 
     } 
     database { 
     name = 'org.jooq.util.mysql.MySQLDatabase' 
     inputSchema = 'library' 
     } 
     generate { 
     daos = true 
     } 
     target { 
     packageName = 'com.example.library.db' 
     directory = 'src/main/java' 
     } 
    } 
    } 
} 
+1

Как вы создаете файлы jOOQ? Предоставьте соответствующий код из 'build.gradle'. – Opal

+0

Добавлена ​​конфигурация @Opal. – Schultz9999

+0

Было бы гораздо лучше добавить папку 'src/main/generated', чтобы не смешивать сгенерированные и исходные файлы. Указанная папка должна быть добавлена ​​как исходный набор и удалена при выполнении задачи 'clean'. – Opal

ответ

1

В настоящее время, когда вы сгенерировали файлы, они добавляются при src/main/java папки. Это не очень хорошая идея, поскольку у вас есть смешанные исходные и сгенерированные файлы. Это гораздо лучше, чтобы добавить отдельную папку src/main/generated и изменить build.gradle следующим образом:

def generatedDir = 'src/main/generated' 
sourceSets { 
    main { 
     java { 
      srcDirs += [generatedDir] 
     } 
    } 
} 

clean.doLast { 
    project.file(generatedDir).deleteDir() 
} 

и изменения:

target { 
    packageName = 'com.example.library.db' 
    directory = generatedDir 
} 

Таким образом, вы можете легко управлять сгенерированные классы. Все классы будут удалены автоматически при выполнении задачи clean.

Вам также необходимо определить зависимость между compileJava и заданием генератора. Это может быть сделано следующим образом:

compileJava.dependsOn YOUR_GENERATOR_TASK_NAME 

jOOQ не удалит файлы автоматически.

+1

Отлично! Работает как описано. – Schultz9999

Смежные вопросы