[#682] Added code generation Maven profiles. Are these the right tool?

This commit is contained in:
Lukas Eder 2014-05-05 14:03:03 +02:00
parent 10ec532b4d
commit 06dfaf5a2b
7 changed files with 416 additions and 27 deletions

View File

@ -1,4 +1,5 @@
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
encoding//target/generated-sources/xjc=UTF-8
encoding/<project>=UTF-8

View File

@ -1,5 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src/main/resources"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
@ -11,19 +18,12 @@
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry exported="true" kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<classpathentry exported="true" kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>

View File

@ -15,13 +15,13 @@
</listAttribute>
<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6&quot; javaProject=&quot;jOOQ-codegen&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/jOOQ-test/lib/postgresql-9.3-1100.jdbc41.jar&quot; path=&quot;3&quot; sourceAttachmentPath=&quot;/jOOQ-sources/postgresql-jdbc-9.0-801.src.zip&quot; sourceRootPath=&quot;&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER&quot; javaProject=&quot;jOOQ&quot; path=&quot;3&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;jOOQ&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;jOOQ-codegen&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;jOOQ-test&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;jOOQ-meta&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/jOOQ-test/lib/log4j-1.2.16.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;jOOQ-test&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER&quot; javaProject=&quot;jOOQ-test&quot; path=&quot;3&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6&quot; javaProject=&quot;jOOQ-test&quot; path=&quot;3&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>
<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry externalArchive=&quot;C:/Users/Lukas/.m2/repository/org/postgresql/postgresql/9.3-1101-jdbc41/postgresql-9.3-1101-jdbc41.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>

View File

@ -7,10 +7,9 @@
<parent>
<groupId>org.jooq</groupId>
<artifactId>jooq-parent</artifactId>
<version>3.4.0-SNAPSHOT</version>
<version>${jooq.version}</version>
</parent>
<groupId>org.jooq</groupId>
<artifactId>jooq-test</artifactId>
<name>jOOQ-test</name>
@ -30,6 +29,14 @@
</licenses>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.springframework.version>3.2.6.RELEASE</org.springframework.version>
<db.h2.version>1.4.177</db.h2.version>
<db.postgres.version>9.3-1101-jdbc41</db.postgres.version>
</properties>
<dependencies>
<dependency>
<groupId>org.jooq</groupId>
@ -48,25 +55,21 @@
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>integration</artifactId>
<version>1.6.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
<scope>test</scope>
</dependency>
@ -75,14 +78,12 @@
<artifactId>junit</artifactId>
<version>4.11</version>
<type>jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jmock</groupId>
<artifactId>jmock-junit4</artifactId>
<version>2.6.0</version>
<type>jar</type>
<scope>test</scope>
</dependency>
@ -90,19 +91,16 @@
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.resource</groupId>
<artifactId>connector-api</artifactId>
<version>1.5</version>
<scope>test</scope>
</dependency>
@ -132,7 +130,7 @@
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.177</version>
<version>${db.h2.version}</version>
</dependency>
<dependency>
<groupId>hsqldb</groupId>
@ -152,7 +150,7 @@
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.3-1101-jdbc41</version>
<version>${db.postgres.version}</version>
</dependency>
<dependency>
<groupId>org.postgis</groupId>
@ -208,4 +206,379 @@
xxxxxxxxxxxxx
xxxx [/pro] -->
</dependencies>
<build>
<plugins>
<!-- We're using the properties plugin to load external properties into Maven.
See this excellent blog post for an explanation:
http://www.petrikainulainen.net/programming/tips-and-tricks/creating-profile-specific-configuration-files-with-maven/ -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>src/main/resources/config.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>codegen-h2</id>
<build>
<plugins>
<plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<version>${jooq.version}</version>
<executions>
<execution>
<id>generate-h2</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<jdbc>
<driver>${db.h2.driver}</driver>
<url>${db.h2.url}</url>
<user>${db.h2.username}</user>
<password>${db.h2.password}</password>
</jdbc>
<generator>
<name>org.jooq.util.DefaultGenerator</name>
<database>
<includes>.*</includes>
<excludes>
T_BOOK_DETAILS # Check if dependent objects (e.g. foreign keys) are not generated
| SYSTEM_SEQUENCE.* # who knows where this came from (sample comment)
| .*\.COL2 # v_2603 contains some columns that we don't want to generate
| COL3 # v_2603 contains some columns that we don't want to generate
</excludes>
<includeExcludeColumns>true</includeExcludeColumns>
<recordVersionFields>
REC_VERSION
| ASDF_ASDF_ASDF # This should not have any effect
</recordVersionFields>
<recordTimestampFields>
REC_TIMESTAMP
| ASDF_ASDF_ASDF # This should not have any effect
| ASDF_ASDF_ASDF # This should not have any effect
</recordTimestampFields>
<dateAsTimestamp>false</dateAsTimestamp>
<unsignedTypes>true</unsignedTypes>
<inputSchema>PUBLIC</inputSchema>
<customTypes>
<!-- [#2844] This typo should emit a warning -->
<customtype>
</customtype>
<customType>
<name>org.jooq.test._.converters.Boolean_10</name>
<converter>org.jooq.test._.converters.Boolean_10_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_TF_LC</name>
<converter>org.jooq.test._.converters.Boolean_TF_LC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_TF_UC</name>
<converter>org.jooq.test._.converters.Boolean_TF_UC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_YN_LC</name>
<converter>org.jooq.test._.converters.Boolean_YN_LC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_YN_UC</name>
<converter>org.jooq.test._.converters.Boolean_YN_UC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_YES_NO_LC</name>
<converter>org.jooq.test._.converters.Boolean_YES_NO_LC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_YES_NO_UC</name>
<converter>org.jooq.test._.converters.Boolean_YES_NO_UC_Converter</converter>
</customType>
</customTypes>
<forcedTypes>
<forcedType>
<name>BOOLEAN</name>
<expression>(?i:(.*?.)?T_BOOLEANS.(VC|C|N)_BOOLEAN)</expression>
</forcedType>
<!-- [#2477] Check if unsigned types work correctly -->
<forcedType>
<name>TINYINTUNSIGNED</name>
<expression>(?i:(.*?.)?T_UNSIGNED.U_BYTE)</expression>
</forcedType>
<forcedType>
<name>SMALLINTUNSIGNED</name>
<expression>(?i:(.*?.)?T_UNSIGNED.U_SHORT)</expression>
</forcedType>
<forcedType>
<name>INTEGERUNSIGNED</name>
<expression>(?i:(.*?.)?T_UNSIGNED.U_INT)</expression>
</forcedType>
<forcedType>
<name>BIGINTUNSIGNED</name>
<expression>(?i:(.*?.)?T_UNSIGNED.U_LONG)</expression>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_YES_NO_LC</name>
<expression>(?i:(.*?.)?T_BOOLEANS.YES_NO_LC)</expression>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_YES_NO_UC</name>
<expression>(?i:(.*?.)?T_BOOLEANS.YES_NO_UC)</expression>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_YN_LC</name>
<expression>(?i:(.*?.)?T_BOOLEANS.Y_N_LC)</expression>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_YN_UC</name>
<expression>(?i:(.*?.)?T_BOOLEANS.Y_N_UC)</expression>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_TF_LC</name>
<expression>(?i:(.*?.)?T_BOOLEANS.TRUE_FALSE_LC)</expression>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_TF_UC</name>
<expression>(?i:(.*?.)?T_BOOLEANS.TRUE_FALSE_UC)</expression>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_10</name>
<expression>(?i:(.*?.)?T_BOOLEANS.ONE_ZERO)</expression>
</forcedType>
</forcedTypes>
</database>
<generate>
<!-- [#2294] daos=true should enforce relations=true -->
<relations>false</relations>
<daos>true</daos>
<!-- [#1280] daos=true should enforce records=true and pojos=true -->
<records>false</records>
<pojos>false</pojos>
<!-- [#2401] Be sure that excess whitespace is trimmed by JAXB -->
<deprecated>
true
</deprecated>
<instanceFields>
false
</instanceFields>
<generatedAnnotation>false</generatedAnnotation>
<interfaces>true</interfaces>
<jpaAnnotations>false</jpaAnnotations>
<fluentSetters>true</fluentSetters>
</generate>
<target>
<packageName>
org.jooq.test.h2.generatedclasses
</packageName>
<directory>
./src/test/java
</directory>
</target>
</generator>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>${db.h2.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>codegen-postgres</id>
<build>
<plugins>
<plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<version>${jooq.version}</version>
<executions>
<execution>
<id>generate-postgres</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<jdbc>
<driver>${db.postgres.driver}</driver>
<url>${db.postgres.url}</url>
<schema>public</schema>
<user>${db.postgres.username}</user>
<password>${db.postgres.password}</password>
</jdbc>
<generator>
<name>org.jooq.util.DefaultGenerator</name>
<strategy>
<matchers>
<fields>
<field>
<expression>(?i:(.*?.)?T_2781\.(.*))</expression>
<fieldIdentifier>
<transform>LOWER</transform>
<expression>$2</expression>
</fieldIdentifier>
</field>
</fields>
</matchers>
</strategy>
<database>
<name>org.jooq.util.postgres.PostgresDatabase</name>
<includes>t_.*|x_.*|v_.*|V_.*|p_.*|f_.*|u_.*|(f|p)[0-9]+|s_.*</includes>
<excludes>t_book_details|.*?_seq|_.*</excludes>
<dateAsTimestamp>false</dateAsTimestamp>
<unsignedTypes>true</unsignedTypes>
<customTypes>
<customType>
<name>B10</name>
<type>org.jooq.test._.converters.Boolean_10</type>
<converter>org.jooq.test._.converters.Boolean_10_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_TF_LC</name>
<converter>org.jooq.test._.converters.Boolean_TF_LC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_TF_UC</name>
<converter>org.jooq.test._.converters.Boolean_TF_UC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_YN_LC</name>
<converter>org.jooq.test._.converters.Boolean_YN_LC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_YN_UC</name>
<converter>org.jooq.test._.converters.Boolean_YN_UC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_YES_NO_LC</name>
<converter>org.jooq.test._.converters.Boolean_YES_NO_LC_Converter</converter>
</customType>
<customType>
<name>org.jooq.test._.converters.Boolean_YES_NO_UC</name>
<converter>org.jooq.test._.converters.Boolean_YES_NO_UC_Converter</converter>
</customType>
</customTypes>
<forcedTypes>
<forcedType>
<name>BOOLEAN</name>
<expression>(?i:(.*?.)?T_BOOLEANS.(VC|C|N)_BOOLEAN)</expression>
</forcedType>
<!-- [#2477] Check if unsigned types work correctly -->
<forcedType>
<name>TINYINTUNSIGNED</name>
<expression>(?i:(.*?.)?T_UNSIGNED.U_BYTE)</expression>
</forcedType>
<forcedType>
<name>SMALLINTUNSIGNED</name>
<expression>(?i:(.*?.)?T_UNSIGNED.U_SHORT)</expression>
</forcedType>
<forcedType>
<name>INTEGERUNSIGNED</name>
<expression>(?i:(.*?.)?T_UNSIGNED.U_INT)</expression>
</forcedType>
<forcedType>
<name>BIGINTUNSIGNED</name>
<expression>(?i:(.*?.)?T_UNSIGNED.U_LONG)</expression>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_YES_NO_LC</name>
<expression>(?i:(.*?.)?T_BOOLEANS.YES_NO_LC)</expression>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_YES_NO_UC</name>
<expression>(?i:(.*?.)?T_BOOLEANS.YES_NO_UC)</expression>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_YN_LC</name>
<expression>(?i:(.*?.)?T_BOOLEANS.Y_N_LC)</expression>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_YN_UC</name>
<expression>(?i:(.*?.)?T_BOOLEANS.Y_N_UC)</expression>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_TF_LC</name>
<expression>(?i:(.*?.)?T_BOOLEANS.TRUE_FALSE_LC)</expression>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_TF_UC</name>
<expression>(?i:(.*?.)?T_BOOLEANS.TRUE_FALSE_UC)</expression>
</forcedType>
<forcedType>
<name>B10</name>
<expression>(?i:(.*?.)?T_BOOLEANS.ONE_ZERO)</expression>
</forcedType>
</forcedTypes>
</database>
<generate>
<relations>true</relations>
<deprecated>false</deprecated>
<instanceFields>true</instanceFields>
<generatedAnnotation>false</generatedAnnotation>
<records>true</records>
<immutablePojos>true</immutablePojos>
<interfaces>true</interfaces>
<jpaAnnotations>false</jpaAnnotations>
<fluentSetters>true</fluentSetters>
</generate>
<target>
<packageName>org.jooq.test.postgres.generatedclasses</packageName>
<directory>./src/test/java</directory>
</target>
</generator>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${db.postgres.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View File

@ -0,0 +1,10 @@
#Database Configuration
db.h2.driver=org.h2.Driver
db.h2.url=jdbc:h2:~/test
db.h2.username=sa
db.h2.password=
db.postgres.driver=org.postgresql.Driver
db.postgres.url=jdbc:postgresql://localhost:5434/postgres
db.postgres.username=postgres
db.postgres.password=test

View File

@ -2,4 +2,5 @@ eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
encoding//src/test/java=UTF-8
encoding//target/generated-sources/xjc=UTF-8
encoding/<project>=UTF-8

View File

@ -12,7 +12,7 @@
<groupId>org.jooq</groupId>
<artifactId>jooq-parent</artifactId>
<version>3.4.0-SNAPSHOT</version>
<version>${jooq.version}</version>
<packaging>pom</packaging>
<name>jOOQ Parent</name>
@ -39,6 +39,10 @@
xxxx [/pro] -->
</licenses>
<properties>
<jooq.version>3.4.0-SNAPSHOT</jooq.version>
</properties>
<scm>
<developerConnection>https://github.com/jOOQ/jOOQ.git</developerConnection>
<url>https://github.com/jOOQ/jOOQ.git</url>