我正在尝试hbm2java使用maven 配置生成POJO类和DAO对象。我要处理的问题之一是没有生成程序包名称。我为此使用以下pom:
hbm2java
<execution> <id>hbm2java</id> <phase>generate-sources</phase> <goals> <goal>hbm2java</goal> </goals> <inherited>false</inherited> <configuration> <components> <component> <name>hbm2java</name> <implementation>configuration</implementation> </component> </components> <componentProperties> <packagename>package.name</packagename> <configurationfile>target/hibernate3/generated-mappings/hibernate.cfg.xml</configurationfile> </componentProperties> </configuration> </execution>
但是,生成的代码从以下内容开始:
// default package // Generated 2010-05-17 13:11:51 by Hibernate Tools 3.2.2.GA /** * Messages generated by hbm2java */ public class Messages implements java.io.Serializable {
有没有一种方法可以强制maven生成 packagename中 定义的 包 部分? __
更新:
这是我的hibernate.cfg.xml,它也是由hibernate-tools(hbm2cfgxml)自动生成的:
<?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> <property name="hibernate.c3p0.max_size">20</property> <property name="hibernate.c3p0.max_statements">50</property> <property name="hibernate.c3p0.min_size">5</property> <property name="hibernate.c3p0.timeout">1800</property> <property name="hibernate.connection.driver_class">org.postgresql.Driver</property> <property name="hibernate.connection.password">password</property> <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/db</property> <property name="hibernate.connection.username">username</property> <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> <mapping resource="package/name/Messages.hbm.xml" /> </session-factory> </hibernate-configuration>
为了以防万一,下面是hibernate3-maven-plugin的工作配置,用于自底向上方法:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>hibernate3-maven-plugin</artifactId> <version>2.2</version> <executions> <execution> <id>generate-xml-files</id> <phase>generate-resources</phase> <goals> <goal>hbm2hbmxml</goal> <goal>hbm2cfgxml</goal> </goals> </execution> <execution> <id>generate-entities</id> <phase>generate-sources</phase> <goals> <goal>hbm2java</goal> </goals> </execution> </executions> <configuration> <components> <component> <name>hbm2hbmxml</name> <implementation>jdbcconfiguration</implementation> <outputDirectory>target/classes</outputDirectory> </component> <component> <name>hbm2cfgxml</name> <implementation>jdbcconfiguration</implementation> <outputDirectory>target/classes</outputDirectory> </component> <component> <name>hbm2java</name> <implementation>configuration</implementation> <outputDirectory>target/generated-sources/hibernate3</outputDirectory> </component> </components> <componentProperties> <propertyfile>src/main/resources/database.properties</propertyfile> <jdk5>true</jdk5> <ejb3>false</ejb3> <packagename>com.mycompany.myapp</packagename> <format>true</format> <haltonerror>true</haltonerror> </componentProperties> </configuration> <dependencies> <dependency> <groupId>org.apache.derby</groupId> <artifactId>derby</artifactId> <version>10.5.3.0_1</version> </dependency> </dependencies> </plugin>
这是我src/main/database.properties文件的内容:
src/main/database.properties
hibernate.connection.driver_class=org.apache.derby.jdbc.EmbeddedDriver hibernate.connection.url=jdbc:derby:./derbyDBs/EMPLDB hibernate.connection.username=APP hibernate.connection.password=APP hibernate.dialect=org.hibernate.dialect.DerbyDialect #workaround for http://opensource.atlassian.com/projects/hibernate/browse/HBX-1145 hibernate.connection.autocommit=true
此设置:
*.hbm.xml
target/classes
generate-resources
hibernate.cfg.xml
target/generated-sources/hibernate3
target/generated-sources/<tool>
这是clean compile针对具有两个表的示例数据库的结果:
clean compile
$ mvn clean编译 ... $树目标/ 目标/ ├──班级 │├──com ││└──我的公司 ││└──myapp ││├──Department.class ││├──Department.hbm.xml ││├──员工等级 ││└──Employee.hbm.xml │├──database.properties │└──hibernate.cfg.xml └──生成源 └──hibernate3 └──com ──我的公司 └──myapp ├──Department.java └──Employee.java