Подтвердить что ты не робот

Не удалось создать hbm2ddl с помощью hibernate3-maven-plugin-3.0

Я обновил новую версию hibernate3-maven-plugin. Я получаю следующую ошибку, пытающуюся использовать плагин, упомянутый ниже.

Поблагодарили бы всех указателей в решении этой проблемы.

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>hibernate3-maven-plugin</artifactId>
    <version>3.0</version>

    <executions>
        <execution>
            <id>create sql schema</id>
            <phase>process-test-resources</phase>
            <goals>
                <goal>hbm2ddl</goal>
            </goals>
            <configuration>
                <componentProperties>
                    <persistenceunit>${app.module}</persistenceunit>
                    <drop>false</drop>
                    <create>true</create>
                    <outputfilename>${app.sql}-create.sql</outputfilename>
                    <skip>${db.schema.gen.skip}</skip>
                </componentProperties>
            </configuration>
        </execution>

        <execution>
            <id>drop sql schema</id>
            <phase>process-test-resources</phase>
            <goals>
                <goal>hbm2ddl</goal>
            </goals>
            <configuration>
                <componentProperties>
                    <persistenceunit>${app.module}</persistenceunit>
                    <drop>true</drop>
                    <create>false</create>
                    <outputfilename>${app.sql}-drop.sql</outputfilename>
                    <skip>${db.schema.gen.skip}</skip>
                </componentProperties>
            </configuration>
        </execution>
    </executions>
</plugin>

[ERROR] Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:3.0:hbm2ddl (create sql schema) on project sample: There was an error creating the AntRun task. NullPointerException -> [Help 1]org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:3.0:hbm2ddl (create sql schema) on project framework: There was an error creating the AntRun task.
4b9b3361

Ответ 1

Путь конфигурации изменился на непосредственное использование плагина инструмента ant hibernate. Таким образом, конфигурация в точности совпадает с тем же форматом, что и плагин ant, не требуя дополнительного TaskDef, например. jpaconfiguration. См. Hibernate ant документацию по документации инструментов: http://docs.jboss.org/tools/3.3.0.Final/en/hibernatetools/html_single/index.html#d0e4651 для получения дополнительной информации.

Для hbm2ddl с конфигурацией jpa вы можете использовать следующее:

<plugin>
    <!-- run "mvn hibernate3:hbm2ddl" to generate a schema -->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>hibernate3-maven-plugin</artifactId>
    <version>3.0</version>

    <configuration>
        <hibernatetool>
            <jpaconfiguration persistenceunit="unitname" />

            <hbm2ddl export="false" create="true"
                update="true" format="true" outputfilename="schemaDiff.ddl" />

        </hibernatetool>
    </configuration>
</plugin>

В случае сбоев имеется файл target/antrun/build-main.xml, который настраивает инструменты спящего режима. В приведенном выше примере это выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8" ?>
<project name="maven-antrun-" default="main"  >
<target name="main">
  <taskdef classname="org.hibernate.tool.ant.EnversHibernateToolTask" name="hibernatetool"/>
  <mkdir dir="/home/xxx/workspace/projectname/target/sql/hibernate3"/>
  <hibernatetool destdir="/home/xxx/workspace/projectname/target/sql/hibernate3">
    <jpaconfiguration persistenceunit="schemaDiff"/>
    <hbm2ddl update="true" export="false" outputfilename="schemaDiff.ddl" format=
"true" create="true"/>
  </hibernatetool>
</target>
</project>

Ответ 2

У меня была эта же проблема, и в конце она была решена, следуя этому примеру (http://www.celinio.net/techblog/?p=1125) и указав спящий режим deps только для плагина. Это связано с тем, что в моем случае у меня есть отдельный объектный модуль домена, который использует только JPA2 (никаких специальных ссылок на гибернацию), поэтому мне нужно было потянуть депилы для генерации DDL, не беспокоясь о том, что они влияют на иждивенцев этого модуля.

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>hibernate3-maven-plugin</artifactId>
            <version>3.0</version>
            <configuration>
                <components>
                    <component>
                        <name>hbm2ddl</name>
                        <implementation>jpaconfiguration</implementation>
                    </component>
                </components>
                <hibernatetool>
                    <classpath>
                        <path location="${project.build.directory}/classes" />
                        <path location="${project.basedir}/src/main/resources/META-INF/" />
                    </classpath>
                    <jpaconfiguration persistenceunit="Configuration" />
                    <hbm2ddl create="true" export="false" drop="true"
                        outputfilename="configuration.sql" format="true" console="true" />
                </hibernatetool>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.hibernate.javax.persistence</groupId>
                    <artifactId>hibernate-jpa-2.0-api</artifactId>
                    <version>1.0.0.Final</version>
                </dependency>
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-entitymanager</artifactId>
                    <version>3.6.7.Final</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

Ответ 3

Я заработал следующим образом:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>3.0</version>
<executions>
    <execution>
        <id>create-schema</id>
        <phase>process-test-resources</phase>
        <goals>
            <goal>run</goal>
        </goals>
        <configuration>
            <hibernatetool destdir="${project.basedir}">
                <classpath>
                    <path
                        location="${project.basedir}/src/main/resources/mappings/" />
                </classpath>
                <configuration
                    configurationfile="${project.basedir}/src/test/resources/hibernate.cfg.xml" />
                <hbm2ddl create="true" export="false"
                    drop="true" outputfilename="schema.sql"
                    format="true" console="false" />
            </hibernatetool>
        </configuration>
    </execution>
</executions>

Основная идея - использовать цель "запустить", а затем настроить hibernatetool для запуска экспортеров, которых вы хотите. Таким образом, вы можете запускать несколько экспортеров за один раз, добавив больше конфигурации экспортеров внутри тега. Для получения дополнительной информации смотрите здесь http://docs.jboss.org/tools/2.0.0.GA/hibernatetools/en/html_single/index.html и http://mojo.codehaus.org/hibernate3-maven-plugin/examples/run-multiple-goals.html. Мне понадобилось пару часов, чтобы понять. Надеюсь, что поможет!