0

我正在尝试使用 hibernate3-maven-plugin 读取我的 persistence.xml 中的 JPA 实体并创建 DDL 数据库脚本,以便我可以将我的表插入到我的数据库中。下面的第一个 maven 插件配置工作并创建 DDL 脚本,但 pom.xml 在 Eclipse 中查看时会出现令人讨厌的生命周期配置错误。我尝试使用下面插件的第二个配置(带有生命周期映射元数据的那个),但它不会创建 DDL 脚本,并且在我进行 mvn 全新安装时不会抛出任何错误。有任何想法吗?

Eclipse XML 验证错误:

Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2ddl (execution: default, phase: 
 compile)

工作但有 Eclipse XML 验证生命周期配置错误:

 <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>hibernate3-maven-plugin</artifactId>
                    <version>2.2</version>
                    <executions>
                        <execution>
                            <phase>compile</phase>
                            <goals>
                                <goal>hbm2ddl</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <components>
                            <component>
                                <name>hbm2ddl</name>
                                <implementation>jpaconfiguration</implementation>
                            </component>
                        </components>
                        <componentProperties>
                            <persistenceunit>myapi</persistenceunit>
                            <outputfilename>my.sql</outputfilename>
                            <drop>false</drop>
                            <create>true</create>
                            <export>false</export>
                            <format>true</format>
                        </componentProperties>
                    </configuration>
                </plugin>

不起作用的生命周期映射元数据:

<plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>hibernate3-maven-plugin</artifactId>
         <version>2.2</version>
         <configuration>
           <lifecycleMappingMetadata>
             <pluginExecutions>
               <pluginExecution>
                 <pluginExecutionFilter>
                   <groupId>org.codehaus.mojo</groupId>
                   <artifactId>hibernate3-maven-plugin</artifactId>
                   <versionRange>[2.2,)</versionRange>
                   <phase>compile</phase>
                   <goals>
                     <goal>hbm2ddl</goal>
                   </goals>
                 </pluginExecutionFilter>
                 <action>
                   <ignore />
                 </action>
               </pluginExecution>
             </pluginExecutions>
           </lifecycleMappingMetadata>
           <components>
                <component>
                    <name>hbm2ddl</name>
                    <implementation>jpaconfiguration</implementation>
                </component>
            </components>
            <componentProperties>
                <persistenceunit>denaliapi</persistenceunit>
                <outputfilename>denali.sql</outputfilename>
                <drop>false</drop>
                <create>true</create>
                <export>false</export>
                <format>true</format>
            </componentProperties>
         </configuration>
        </plugin>
4

1 回答 1

0

应该忽略的生命周期映射是 m2e,而不是 hibernate3。使用您的第一个块来配置 hibernate-maven3,并将此块用于 m2e:

<plugin>
  <groupId>org.eclipse.m2e</groupId>
  <artifactId>lifecycle-mapping</artifactId>
  <version>1.0.0</version>
  <configuration>
    <lifecycleMappingMetadata>
      <pluginExecutions>
        <pluginExecution>
          <pluginExecutionFilter>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>hibernate3-maven-plugin</artifactId>
            <versionRange>[2.2,)</versionRange>
            <goals>
              <goal>hbm2ddl</goal>
            </goals>
          </pluginExecutionFilter>
          <action>
            <ignore />
          </action>
        </pluginExecution>
      </pluginExecutions>
    </lifecycleMappingMetadata>
  </configuration>
</plugin>

如果更改后没有生成 DDL,请尝试<ignore/><execute/>.

(旁白:@gerrytan 提出的 Ctrl+1 建议在 Kepler 中有效。您的插入符号是否与错误一致?)

于 2014-02-05T00:52:45.847 回答