I\'m trying to configure hbm2java
with maven to generate POJO classes and DAO objects. One of the issues I\'m dealing with is package names aren\'t generated. I
Ok, I figured it out. I put the answer here.
Just in case, here is a working configuration of the hibernate3-maven-plugin for a bottom-up approach:
<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>
And here is the content of my src/main/database.properties
file:
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
This setup:
*.hbm.xml
in target/classes
(with the package) during generate-resources
.hibernate.cfg.xml
in target/classes
with entries for the mapping files.target/generated-sources/hibernate3
(I recommend following the target/generated-sources/<tool>
convention for generated sources so that they will get auto-detected by IDEs).Here is a the result of clean compile
against a sample database with two tables:
$ mvn clean compile ... $ tree target/ target/ ├── classes │ ├── com │ │ └── mycompany │ │ └── myapp │ │ ├── Department.class │ │ ├── Department.hbm.xml │ │ ├── Employee.class │ │ └── Employee.hbm.xml │ ├── database.properties │ └── hibernate.cfg.xml └── generated-sources └── hibernate3 └── com └── mycompany └── myapp ├── Department.java └── Employee.java