MiniJAXB doesn't deep clone the appended objects, so we end up using shared mutable state (see [jOOQ/jOOQ#16056]). This must be avoided, otherwise, each execution updates the common shared default configuration, which is certainly not what we want.
Correct order of registering tasks and configuring them. We mustn't rely on any implicit ordering of the NamedDomainObjectContainer as that might be an implementation detail subject to change at any time.
jOOQ-codegen-gradle tasks
This includes:
- [jOOQ/jOOQ#15974] Cannot look up tasks.named(jooqCodegen) from
gradle scripts
- [jOOQ/jOOQ#16003] Misleading XSD warnings logged when working with
MiniJAXB
We still need explicit groovy Closure support in our DSL API for gradle because of an interesting decision in ClosureBackedAction to prefer Closure.OWNER_ONLY over Closure.DELEGATE_FIRST. Apparenty, OWNER_ONLY is faster, but DELEGATE_FIRST is really what we want, irrespective of speed
Contributing the [Gradle plugin](https://github.com/ben-manes/gradle-jooq-plugin) required,
- Updating to the package names
- Adding to the Maven build. The Gradle plugin dependencies piggyback
on Flyway's repository, as Gradle does not officially publish the
dependencies for building plugins in another build tool.
- Assigning copyright
This contribution is not tested due to a broader build failure in
`FlashbackTable`.
Note that this plugin took a simple and fast approach by leveraging
Groovy's XML markeup syntax. This provided a concise extension, at
the cost of flexibility to customize the plugin in multiple build
scripts (e.g. subproject adding data type converters). A richer
plugin should be created, but exceeded the scope of what was needed
at the time of development.