Jooq 3.9.3 在生成后删除自定义生成的 java 文件
Jooq 3.9.3 deletes custom generated java files after generate
这是我们从 jooq 版本 3.4.1 迁移到 3.9.3[= 时遇到的问题39=].
我们有一个设置,其中我们扩展 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 文件,这个文件将在 clean install
.
似乎枚举在第一个(共两个)生成目标后被删除:
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 个文件。
编辑
这是来自 Lukas 评论的关于此功能的 link 到 github 问题。
这是我们从 jooq 版本 3.4.1 迁移到 3.9.3[= 时遇到的问题39=].
我们有一个设置,其中我们扩展 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 文件,这个文件将在 clean install
.
似乎枚举在第一个(共两个)生成目标后被删除:
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 个文件。
编辑
这是来自 Lukas 评论的关于此功能的 link 到 github 问题。