0

MavenでスキーマSQLスクリプトを生成したいと思います。

ここに私の永続化ファイルがあります:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="mypersistance"
        transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"></property>
            <property name="hibernate.archive.autodetection" value="class"></property>
        </properties>
        <description>Persistance descriptor</description>
        <class>test.sofiane.beans.Code</class>
    </persistence-unit>
</persistence>

ハイバネート構成ファイル

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory name="mySessionFactory">
        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/test</property>
        <property name="hibernate.connection.username">postgres</property>
        <property name="hibernate.default_schema">public</property>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
    </session-factory>
</hibernate-configuration>

pom のプラグイン

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <!-- Hibernatetool will generate everything before running tests -->
            <phase>compile</phase>
            <configuration>
                <target>
                    <echo message="Ant target, through maven-antrun-plugin, started" />
                    <property name="maven_compile_classpath" refid="maven.compile.classpath" />
                    <property name="maven_test_classpath" refid="maven.test.classpath" />
                    <path id="hibernatetool.path">
                        <pathelement path="${maven_compile_classpath}" />
                        <pathelement path="${maven_test_classpath}" />
                    </path>
                    <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask"
                        classpathref="hibernatetool.path" />
                    <property name="generatedByHibernate.outputDirectory"
                        value="${project.build.directory}/generated/hibernatetool" />
                    <mkdir dir="${generatedByHibernate.outputDirectory}" />

                    <hibernatetool destdir="${generatedByHibernate.outputDirectory}">
                        <classpath>
                            <path location="${project.build.directory}/classes/test/sofiane/beans" />
                        </classpath>
                        <configuration
                            configurationfile="${project.build.directory}/classes/hibernate.cfg.xml" />
                        <hbm2ddl export="true" drop="true" create="true"
                            outputfilename="helloworld.ddl" format="true" />
                    </hibernatetool>

                    <echo message="Ant target, through maven-antrun-plugin, terminated" />
                </target>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

pom は正常に動作し、helloworld.ddl を生成しますが、残念ながら空です。

任意のアイデアをお願いします?

4

1 に答える 1

0

私の最初のアドバイスは、必要なものがすべて含まれており、 を使用して記述しなければならなかったすべての構成よりもはるかに簡単に使用できるため、 のhibernate3-maven-plugin代わりに を使用することをお勧めします( の詳細については、こちらを参照してください)。maven-antrun-pluginmaven-antrun-pluginhibernate3-maven-plugin

そして、問題を解決するために、この投稿と回答で問題の答えを見つけることができると思います.

また、コンパイル フェーズの後、たとえば process-classes フェーズで hibernate3-maven-plugin の実行をバインドすることを忘れないでください (「ライフサイクル リファレンス」を参照) mvn process-classes

于 2015-05-05T09:09:59.040 に答える