2

我将 Eclipse Indigo 与 M2Eclipse 1.0.200.20111228-1245 一起使用,我想使用 hibernate3-maven-plugin 3.0 版从我的 Hibernate 配置文件和映射文件生成数据库模式。这是我的 pom.xml 中的插件 xml 片段。

<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>hbm2ddl</goal>
            </goals>
            <configuration>
                <components>
                    <component>
                        <name>hbm2ddl</name>
                        <implementation>configuration</implementation>
                    </component>
                </components>
                <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>
</plugin>

使用上述配置,我可以在 Eclipse 中使用 m2eclipse(嵌入式 maven 3.0.2)运行“Maven 构建”,并且目标“process-test-resources”就好了。但是当我尝试使用独立的 maven (3.0.4) 运行时,我遇到了这样的异常

[ERROR] Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:3.0:hbm2ddl (default-cli) on project amlbs: 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 (default-cli) on project amlbs: There was an error creating the AntRun task.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: There was an error creating the AntRun task.
    at org.codehaus.mojo.hibernate3.AbstractHibernateMojo.execute(AbstractHibernateMojo.java:84)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 19 more
Caused by: java.lang.NullPointerException
    at org.codehaus.plexus.configuration.DefaultPlexusConfiguration.add(DefaultPlexusConfiguration.java:170)
    at org.codehaus.plexus.configuration.DefaultPlexusConfiguration.addChild(DefaultPlexusConfiguration.java:146)
    at org.codehaus.mojo.hibernate3.util.PlexusConfigurationUtils.setHibernateConfiguration(PlexusConfigurationUtils.java:289)
    at org.codehaus.mojo.hibernate3.util.PlexusConfigurationUtils.parseHibernateTool(PlexusConfigurationUtils.java:67)
    at org.codehaus.mojo.hibernate3.AbstractHibernateToolMojo.getConfiguration(AbstractHibernateToolMojo.java:60)
    at org.codehaus.mojo.hibernate3.AbstractHibernateMojo.execute(AbstractHibernateMojo.java:76)
    ... 21 more
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

任何帮助,将不胜感激!

4

1 回答 1

0

If it is at all any help, here is a working configuration for version 3.0 of the hibernate3-maven-plugin. It is firing off hbm2java (your question is for hbm2ddl) but it appears to me useful regardless, particularly while no one else is answering (yet).

<configuration>
    <hibernatetool>
        <classpath>
            <path location="${project.build.testOutputDirectory}" />
        </classpath>
        <jdbcconfiguration
            propertyfile="${basedir}/jpa-reveng/hibernate.properties"
            revengfile="${basedir}/jpa-reveng/hibernate.reveng.xml"
            reversestrategy="com.package.MyReverseEngineeringStrategy" />
        <hbm2java jdk5="true" ejb3="true"
            destdir="${project.build.sourceDirectory}" />
    </hibernatetool>
</configuration>
于 2013-09-20T03:51:28.147 回答