gpt4 book ai didi

java - Jooq 3.9.3 生成后删除自定义生成的java文件

转载 作者:行者123 更新时间:2023-11-30 06:40:57 25 4
gpt4 key购买 nike

这是我们从 jooq 版本 3.4.1 迁移到 3.9.3 时遇到的问题。

我们有一个设置,其中扩展了 JavaGenerator 并覆盖了generatePojo(TableDefinition tableDefinition),以根据数据库中的数据创建一些自定义枚举。这个枚举是以一种有点黑客的方式创建的,使用 PrintWriter 并将数据写入 FooEnum.java 文件。

类似这样的事情:

public class FooGenerator extends JavaGenerator {

@Override
protected void generatePojo(TableDefinition table) {
super.generatePojo(table);
// this works in jooq 3.4.1 but not in 3.9.3
generateEnumClasses(table); // loads data and produces FooEnum.java with PrintWriter

}
}

所发生的情况是,FooEnum.java 被生成,然后不久就被删除。有趣的是,如果我在应创建枚举的目录中创建 Foo.txt 文件,则该文件将在干净安装中保留下来。

似乎枚举在第一个(两个)生成目标后被删除:

jooq-codegen-maven:3.9.3:generate 

有什么想法为什么枚举会被删除以及如何保留 3.4.1 版本中的行为吗?

我们用来扩展 JavaGenerator 的自定义生成器提供给插件:

<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<id>some id</id>
<configuration>
<generator>
<name>org.jooq.util.FooGenerator</name>
// ...
</generator>
</configuration>
</execution>
</executions>

最佳答案

如果其他人偶然发现这一点,似乎在较新的 jooq 版本中存在一些清理代码

JavaGenerator {

public final void generate(Database db) {
// .... this deletes 'excess' java files
log.info("Removing excess files");
this.empty(this.getStrategy().getFileRoot(),this.scala?".scala":".java", this.files, this.directoriesNotForRemoval);
this.directoriesNotForRemoval.clear();
this.files.clear();
}
}

删除多余的.java文件。

编辑

这是一个link来自 Lukas 评论的有关此功能的 github 问题。

关于java - Jooq 3.9.3 生成后删除自定义生成的java文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44389198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com