在将hibernate-tools插件用于Maven时,应在哪里指定自定义逆向工程类?

时间:2019-02-03 11:48:24

标签: maven-2 maven-plugin hibernate-tools

我有一个自定义策略,但是我不知道如何让该插件使用它。

我的相关pom部分是:

<build>

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.1.1.RELEASE</version>
        </plugin>

        <plugin>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-tools-maven-plugin</artifactId>
            <version>5.4.1.Final</version>
            <executions>
                <execution>
                    <id>Display Help</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>help</goal>
                    </goals>
                </execution>
                <execution>
                    <id>Entity generation</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>hbm2java</goal>
                    </goals>
                    <configuration>
                        <templatePath>src/main/resources/templates/</templatePath>
                        <!-- Defaults: -->
                        <outputDirectory>generated-sources/</outputDirectory>
                        <ejb3>false</ejb3>
                        <jdk5>false</jdk5>
                    </configuration>
                </execution>
                <execution>
                    <id>Schema generation</id>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>hbm2ddl</goal>
                    </goals>
                    <configuration>
                        <!--Possible targetType: SCRIPT (default), STDOUT, DATABASE -->
                        <targetTypes>
                            <param>SCRIPT</param>
                            <param>STDOUT</param>
                            <param>DATABASE</param>
                        </targetTypes>
                        <!-- Defaults: -->
                        <outputDirectory>generated-resources/</outputDirectory>
                        <!--Possible schemaExportAction: CREATE (default), DROP, BOTH -->
                        <schemaExportAction>CREATE</schemaExportAction>
                        <outputFileName>schema.ddl</outputFileName>
                        <delimiter>;</delimiter>
                        <haltOnError>true</haltOnError>
                        <format>true</format>
                    </configuration>
                </execution>
            </executions>
            <configuration>
                <revengFile>src/main/hibernate/hibernate.reveng.xml</revengFile>
                <!-- Defaults: -->
                <packageName></packageName>
                <configFile>src/main/hibernate/hibernate.cfg.xml</configFile>
                <detectManyToMany>true</detectManyToMany>
                <detectOneToOne>true</detectOneToOne>
                <detectOptimisticLock>true</detectOptimisticLock>
                <createCollectionForForeignKey>true</createCollectionForForeignKey>
                <createManyToOneForForeignKey>true</createManyToOneForForeignKey>
            </configuration>
            <dependencies>
                <!-- databases -->
                <dependency>
                    <!-- DB Driver of your choice -->
                    <groupId>com.oracle</groupId>
                    <artifactId>oracle-jdbc8</artifactId>
                    <version>18</version>
                </dependency>
                <dependency>
                    <groupId>org.postgresql</groupId>
                    <artifactId>postgresql</artifactId>
                    <version>42.2.1</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>

    <pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                    <version>5.4.1.Final</version>
            </plugin>
            <!--  
            <plugin>
                <groupId>org.springframework.boot</groupId>
            </plugin>
            -->
        </plugins>
    </pluginManagement>

</build>

我的hibernate.reveng.xml是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering SYSTEM "http://hibernate.org/dtd/hibernate-reverse-engineering-3.0.dtd" >

<hibernate-reverse-engineering>

    <type-mapping>
        <sql-type jdbc-type="DATE" hibernate-type="java.time.LocalDate"/>
        <sql-type jdbc-type="TIMESTAMP" hibernate-type="java.time.LocalDateTime"/>
    </type-mapping>

</hibernate-reverse-engineering>

此外,尽管在配置中我已指定使用“ src / main / hibernate / hibernate.cfg.xml”,但它正在读取“ hibernate.properties”

我想我得到的https://github.com/stadler/hibernate-tools-maven-plugin示例具有错误的配置属性名称。

所以:

1)最初的问题

2)如何配置它以使用指定的配置文件?

3)在哪里有所有配置问题的列表,最后尽管有

    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                    <version>5.4.1.Final</version>
            </plugin>
        </plugins>
    </pluginManagement>

我在Eclipse中收到“生命周期未涵盖的插件执行”

显然,我没有正确遵循此StackOverflow答案How to solve "Plugin execution not covered by lifecycle configuration" for Spring Data Maven Builds

1 个答案:

答案 0 :(得分:0)

文档说,将revengStrategy配置添加到带有扩展DefaultReverseEngineeringStrategy的类的全名的插件中。但是,当您尝试此操作时,它将引发类未实例化的错误。我提出了有关休眠工具的问题。

但是,如果您有多模块项目,我已经看到了可以在其中运行的解决方案。自定义类应该是其他模块的一部分,并且应该将该模块作为插件依赖项添加。

如果我从休眠工具中收到回复,则可以稍后在此处找到 https://jonamlabs.com/how-to-use-hibernate-tools-maven-plugin-to-generate-jpa-entities-from-an-existing-database/