这类似于这个问题,但我们用Gradle代替。假设我们在构建脚本中直接使用jOOQ的代码生成,正如文档中所描述的那样。
有两个问题。首先,我们将向生成器配置中添加一个新的策略,这应该很简单:
// ...
generator() {
// ...
strategy() {
name('com.example.MyCustomGeneratorStrategy')
}
}
然而,如果我们打印得到的XML配置,名称元素就会被神秘地省略(也会被悄悄地省略):
<generator>
<!-- ... -->
<strategy />
</generator>
其次,可以使用什么机制来预编译生成器策略类(com.example.MyCustomGeneratorStrategy
)并使其在构建脚本的类路径中可用?这里有一个可能的问题:策略代码依赖于jOOQ的codesen模块(也可能有其他依赖关系——例如我们的依赖于Apache Commons Lang)。
第一个问题(默认省略名称)似乎与Groovy MarkupBuilder名称冲突问题中描述的问题类似。根据答案的建议,我们可以通过以下操作解决问题#1:
// ...
generator() {
// ...
strategy() {
delegate.invokeMethod('name', 'com.example.MyCustomGeneratorStrategy')
}
}
(当然,在这些废话上面加一个描述性的注释,以阻止将来的任何欺骗行为……)有了这些,XML配置实际上是正确的:
<strategy>
<name>com.example.MyCustomGeneratorStrategy</name>
</strategy>
第二个问题(预编译strategy类并将其放置在构建脚本的类路径中)已经由Gradle解决:使用特殊的buildSrc项目。也就是说,在项目根目录中放置一个buildSrc目录。设置buildSrc/build。gradle要包括jOOQ codegen依赖项和您可能需要的任何其他依赖项:
repositories() {
mavenCentral()
}
dependencies {
compile 'org.apache.commons:commons-lang3:+'
compile 'org.jooq:jooq-codegen:+'
}
然后在buildSrc/src/main/java
中,您可以放置您的生成器策略类。这样,代码生成应该可以正常工作(Gradle将为您在buildSrc
中预编译这些东西)。如果您在生成器类中搞砸了一些东西并且找不到它,jOOQ无论如何都应该抛出一个ClassNotFoundException
。
(注意:我们正在使用jOOQ文档中描述的其余构建脚本配置。如果您偏离了这一点,上述内容可能没有帮助。)
使用jOOQ,我可能希望将jOOQ代码生成器与Maven和自定义生成器策略结合使用。看起来这可以这样做(省略不相关的部分): 上面的配置描述了问题。jOOQ的代码生成器挂钩到Maven生命周期的生成目标,它发生在生命周期的编译目标之前。但是,对于代码生成,它需要一个预编译的自定义策略类,否则我会得到一个。如何使用Maven解决这个问题?我可以在执行目标之前编译单个类吗?
我使用jOOQ程序代码生成数据库,但现在我遇到了一些问题。在数据库中,我有表A和表B。第一次都生成了pojo、dao、接口等。经过一段时间的开发,我发现表A需要添加一些字段或修改一些字段,所以我不得不再次编码,然后jOOQ代码生成器将覆盖现有的代码,这让我很难过。当我在排除表的情况下使用“排除A”时,发现只生成了表A的数据,表B将被删除。我不知道如何处理这个问题。我的代码生成器如下:
我正在尝试从多个 WSDL 文件生成 Axis2 (v1.6.1) Web 服务客户端代码,以便我可以在单个项目中拥有多个 Web 服务客户端。我正在使用 Ant 通过代码生成任务生成源代码。 因此,我需要使用自定义命名空间来打包映射,以使每个 Web 服务客户端的代码与其他客户端的代码分开,以避免冲突。 下面是一个示例 WSDL 文件中的命名空间: 我已经设法将生成代码的主体放入适当的包中。我已
我正在尝试使用xText和xtendbuilding与gradle创建第一个项目。 我按照xText文档中的指导创建了语法,还创建了xtend生成器。 在eclipse中,代码按预期生成到src-gen文件夹。 当我创建gradle脚本时,也遵循http://xtext.github.io/xtext-gradle-plugin/xtext-builder.html来构建我的代码,而不是在它生成的
我有一个Springboot项目,它使用Liquibase进行数据库迁移,使用Jooq进行数据库访问和相关的代码生成。当Jooq反省一个应用了所有更改的数据库时,这很好,但是现在我想转换到内存中的H2数据库来生成代码,这样Jooq就不依赖于我的实际(Postgres)数据库。 但是当使用Jooq生成源时,我现在得到一个错误,因为我有一个唯一约束的列上有一个重复的键异常。我注意到这是因为我使用Liq
我更改了数据库中的一些表,所以我想生成记录、键、类等。但是每次我这样做时,它总是跳过jooq代码生成。 [INFO]--jooq-codegen-maven:3.11.10:generate(默认cli)@http网关--[INFO]跳过jooq代码生成 为了运行Jooq代码生成,我应该执行哪个mvn cmd?现在我使用: 谢谢