Maven “调试”;jOOQ代码生成工具的配置不正确;

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 ---

我正试图遵循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 ---                                                                                                                              
[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(无此类文件或目录)
。我创建了到where
DefaultCatalog的完整路径。应该生成java
,但它仍然以同样的方式失败。@JamesHiew似乎只是与目标路径相关的一个错误,你确定你有正确的路径吗?另外请注意,你可以使用maven的相对路径作为目标
src/main/java/
,这可能更像c很方便。@wallek876这帮我节省了很多工作。我的配置与OP相同,但奇怪的是,
mvn clean package
工作正常,但
mvn jooq codegen:generate
没有。我对你的答案进行了更改,现在一切正常。谢谢+1