In-memory compilation of programmatic configuration
Supported by ✅ Open Source Edition ✅ Express Edition ✅ Professional Edition ✅ Enterprise Edition
Various code generation configuration elements allow for programmatic configuration via external classes. This allows for more fine-grained control over the code generation behaviour. Examples include:
- Programmatic GeneratorStrategy implementations
- The Database instance, which provides meta data
- The Generator instance, which provides code generation logic
The above examples all allow for specifying inline code for in-memory compilation of the relevant object. For example, when defining a GeneratorStrategy:
<configuration>
<generator>
<strategy>
<name>com.example.AsInDatabaseStrategy</name>
<java>package com.example;
import org.jooq.codegen.DefaultGeneratorStrategy;
public class AsInDatabaseStrategy extends DefaultGeneratorStrategy {
...
}</java>
</strategy>
</generator>
</configuration>
See the configuration XSD, standalone code generation, and maven code generation for more details.
new org.jooq.meta.jaxb.Configuration()
.withGenerator(new Generator()
.withStrategy(new Strategy()
.withName("com.example.AsInDatabaseStrategy")
.withJava("""package com.example;
import org.jooq.codegen.DefaultGeneratorStrategy;
public class AsInDatabaseStrategy extends DefaultGeneratorStrategy {
...
}""")
)
)
See the configuration XSD and programmatic code generation for more details.
import org.jooq.meta.jaxb.*
configuration {
generator {
strategy {
name = "com.example.AsInDatabaseStrategy"
java = """package com.example;
import org.jooq.codegen.DefaultGeneratorStrategy;
public class AsInDatabaseStrategy extends DefaultGeneratorStrategy {
...
}"""
}
}
}
See the configuration XSD and gradle code generation for more details.
configuration {
generator {
strategy {
name = "com.example.AsInDatabaseStrategy"
java = """package com.example;
import org.jooq.codegen.DefaultGeneratorStrategy;
public class AsInDatabaseStrategy extends DefaultGeneratorStrategy {
...
}"""
}
}
}
See the configuration XSD and gradle code generation for more details.
// The jOOQ-codegen-gradle plugin has been introduced in version 3.19. // Please use the official plugin instead of the third party plugin that was recommended before.
The name must match the fully qualified class name of a GeneratorStrategy.
Make sure your custom implementation's dependencies are available to the code generator as a code generator dependency
Not all custom implementations can be provided as an in-memory compilable piece of code. Please do check the relevant manual section if this is possible.
Feedback
Do you have any feedback about this page? We'd love to hear it!