Maven “调试”;jOOQ代码生成工具的配置不正确;
我正试图遵循jOOQ教程。我在(代码生成),但希望使用Maven执行代码生成步骤 以下是我的Maven “调试”;jOOQ代码生成工具的配置不正确;,maven,code-generation,jooq,Maven,Code Generation,Jooq,我正试图遵循jOOQ教程。我在(代码生成),但希望使用Maven执行代码生成步骤 以下是我的pom.xml的内容: 4.0.0 net.hiew 运行mvn-e jooq codegen:generate时出现的错误: [INFO] --- jooq-codegen-maven:3.11.2:generate (default-cli) @ jooq-tutorial ---
pom.xml
的内容:
4.0.0
net.hiew
运行mvn-e jooq codegen:generate时出现的错误:
[INFO] --- jooq-codegen-maven:3.11.2:generate (default-cli) @ jooq-tutorial ---
[ERROR] Incorrect configuration of jOOQ code generation tool
[ERROR]
The jOOQ-codegen-maven module's generator configuration is not set up correctly.
This can have a variety of reasons, among which:
- Your pom.xml's <configuration> contains invalid XML according to jooq-codegen-3.11.0.xsd
- There is a version or artifact mismatch between your pom.xml and your commandline
[INFO]--jooq-codegen-maven:3.11.2:generate(默认cli)@jooq-tutorial--
[错误]jOOQ代码生成工具的配置不正确
[错误]
jOOQ codegen maven模块的发电机配置设置不正确。
这可能有多种原因,其中:
-根据jooq-codegen-3.11.0.xsd,您的pom.xml包含无效的xml
-pom.xml和命令行之间存在版本或工件不匹配
错误消息没有那么大帮助,因此我不确定进一步调试问题的最佳方法。pom.xml
进行验证,并且数据库存在并且可以按照
元素中的描述进行访问。或者,您可以将executionId重命名为默认cli
。因此,这应该是可行的:
默认cli
生成源
生成
...
另一个我一直喜欢的选择是使用配置文件:
约克代码根
org.jooq
jooq codegen maven
3.11.2
...
然后,用
mvn install -P jooq-codegen
配置标记必须直接位于插件标记下方,而不是在执行内部:
<plugin>
...
<executions>
...
</executions>
<configuration>
...
</configuration>
...
</plugin>
...
...
...
...
完整插件标签:
<plugin>
<!-- Specify the maven code generator plugin -->
<!-- Use org.jooq for the Open Source Edition org.jooq.pro for commercial editions, org.jooq.pro-java-6 for commercial editions with Java 6 support, org.jooq.trial for the free trial edition Note: Only the Open Source Edition is hosted on Maven Central. Import the others manually from your distribution -->
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<version>3.11.2</version>
<executions>
<execution>
<id>jooq-codegen</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>${mariadb.version}</version>
</dependency>
</dependencies>
<configuration>
<!-- Configure the database connection here -->
<jdbc>
<driver>org.mariadb.jdbc.Driver</driver>
<url>jdbc:mariadb://localhost:3306/library</url>
<user>root</user>
<password>mysql</password>
</jdbc>
<generator>
<!-- The default code generator. You can override this one, to generate your own code style. Supported generators: - org.jooq.codegen.JavaGenerator - org.jooq.codegen.ScalaGenerator Defaults to org.jooq.codegen.JavaGenerator -->
<name>org.jooq.codegen.JavaGenerator</name>
<database>
<!-- The database type. The format here is: org.util.[database].[database]Database -->
<name>org.jooq.meta.mariadb.MariaDBDatabase</name>
<!-- The database schema (or in the absence of schema support, in your RDBMS this can be the owner, user, database name) to be generated -->
<inputSchema>library</inputSchema>
<!-- All elements that are generated from your schema (A Java regular expression. Use the pipe to separate several expressions) Watch out for case-sensitivity. Depending on your database, this might be important! -->
<includes>.*</includes>
<!-- All elements that are excluded from your schema (A Java regular expression. Use the pipe to separate several expressions). Excludes match before includes, i.e. excludes have a higher priority -->
<excludes>
</excludes>
</database>
<target>
<!-- The destination package of your generated classes (within the destination directory) -->
<packageName>net.hiew.jooqtutorial.generated</packageName>
<!-- The destination directory of your generated classes. Using Maven directory layout here -->
<directory>/home/james/src/local/jooqtutorial/src/main/java/</directory>
</target>
</generator>
</configuration>
</plugin>
org.jooq
jooq codegen maven
3.11.2
约克代码根
生成源
生成
org.mariadb.jdbc
mariadb java客户端
${mariadb.version}
org.mariadb.jdbc.Driver
jdbc:mariadb://localhost:3306/library
根
mysql
org.jooq.codegen.JavaGenerator
org.jooq.meta.mariadb.MariaDBDatabase
图书馆
.*
net.hiew.jooqtutorial.generated
/home/james/src/local/jooqtutorial/src/main/java/
注意:您可能需要在依赖项中指定您的mariadb版本,我添加了defalut变量名。它提供的输出与运行在Oracle Java 9上的mvn-e jooq codegen:generate
Maven 3.5.4相同。没有骰子。@JamesHiew:更新了答案谢谢!这更进一步了。现在它抛出了一个不同的错误:运行jOOQ代码生成工具时出错:为目录生成代码时出错:编写/home/james/src/local/jooqtutorial/src/main/java/net/hie w/jooqtutorial/generated/DefaultCatalog.java:/home/james/src/local/jooqtutorial/src/main/java/net/hiew/jooqtutorial/generated/DefaultCatalog.java(无此类文件或目录)
。我创建了到whereDefaultCatalog的完整路径。应该生成java
,但它仍然以同样的方式失败。@JamesHiew似乎只是与目标路径相关的一个错误,你确定你有正确的路径吗?另外请注意,你可以使用maven的相对路径作为目标src/main/java/
,这可能更像c很方便。@wallek876这帮我节省了很多工作。我的配置与OP相同,但奇怪的是,mvn clean package
工作正常,但mvn jooq codegen:generate
没有。我对你的答案进行了更改,现在一切正常。谢谢+1