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

时间:2017-06-06 11:46:29

标签: java jooq

这是我们从 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 文件,则此文件将保留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>

1 个答案:

答案 0 :(得分:1)

如果其他人偶然发现这一点,似乎在较新的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问题。