源码编译前JOOQ代码生成
JOOQ Code Generation Before Source Code Compilation
我正在使用 JOOQ 代码生成工具为我的模式生成源代码 (MYSQL)。我想在每次编译我的项目时生成源代码。但是我无法做到这一点,因为当我 运行 代码生成 gradle 任务时,编译器开始抱怨已删除源代码的引用。
这是我所做的:-
- 创建了一个空 Spring 引导项目。
- 使用配置 xml(下面的 jooq.xml)生成源代码,如 this
- 使用 Gradle 任务触发代码生成。
Build.gradle
task generateJooqDatabaseSource(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = 'org.jooq.util.GenerationTool'
args = ['/jooq.xml']
standardOutput = System.out
errorOutput = System.err
}
- 使用生成的源代码并使用 JOOQ 编写 SQL。
到这里一切都很好。但是现在我不想将生成的 Java 类 推送到我的项目中。我希望每次编译我的项目时都创建它。
所以让我们删除生成的源代码并重新生成它(比如我的测试环境)
但是一旦我 运行 Gradle 任务 generateJooqDatabaseSource
它开始抱怨生成的代码引用。
error: package autogenered.jooq.code.db.tables does not exist
import autogenered.jooq.code.db.tables.Author;
尝试用谷歌搜索问题并找到使用 flyway, suggested here
等插件的建议
但我真的不想再添加一个插件,如果没有它也能轻松实现。
PS:- 刚开始使用 Gradle, JOOQ 从几天开始,如果答案很明显,我们深表歉意。
在 build.gradle 中添加以下行已经为我完成了调整:
compileJava.dependsOn(generateJooqDatabaseSource)
generateJooqDatabaseSource.dependsOn = [processResources, processTestResources]
Intellij具体配置:-
添加了 gradle build task
每次我
时都会触发
make Project (Ctrl-F9)
或
Re-build Project:
我正在使用 JOOQ 代码生成工具为我的模式生成源代码 (MYSQL)。我想在每次编译我的项目时生成源代码。但是我无法做到这一点,因为当我 运行 代码生成 gradle 任务时,编译器开始抱怨已删除源代码的引用。
这是我所做的:-
- 创建了一个空 Spring 引导项目。
- 使用配置 xml(下面的 jooq.xml)生成源代码,如 this
- 使用 Gradle 任务触发代码生成。
Build.gradle
task generateJooqDatabaseSource(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = 'org.jooq.util.GenerationTool'
args = ['/jooq.xml']
standardOutput = System.out
errorOutput = System.err
}
- 使用生成的源代码并使用 JOOQ 编写 SQL。
到这里一切都很好。但是现在我不想将生成的 Java 类 推送到我的项目中。我希望每次编译我的项目时都创建它。
所以让我们删除生成的源代码并重新生成它(比如我的测试环境)
但是一旦我 运行 Gradle 任务
generateJooqDatabaseSource
它开始抱怨生成的代码引用。
error: package autogenered.jooq.code.db.tables does not exist
import autogenered.jooq.code.db.tables.Author;
尝试用谷歌搜索问题并找到使用 flyway, suggested here
等插件的建议但我真的不想再添加一个插件,如果没有它也能轻松实现。
PS:- 刚开始使用 Gradle, JOOQ 从几天开始,如果答案很明显,我们深表歉意。
在 build.gradle 中添加以下行已经为我完成了调整:
compileJava.dependsOn(generateJooqDatabaseSource)
generateJooqDatabaseSource.dependsOn = [processResources, processTestResources]
Intellij具体配置:-
添加了 gradle build task
每次我
make Project (Ctrl-F9)
或
Re-build Project: