2010-05-30 2 views
3

Я пытаюсь перенести мою сборку муравьев на maven2. в моем build.xml я призываю hbm2java следующим образом:Как настроить hbm2java maven2 плагин для создания POJO для всех файлов сопоставления

<hibernatetool destdir="/src/generated/"> 
     <configuration configurationfile="${env.ITP_HOME}/core/xml/hibernate/hibernate.cfg.xml"> 
      <fileset dir="/xml/hibernate"> 
       <include name="*.hbm.xml"/> 
      </fileset> 
     </configuration> 
     <hbm2java/> 
    </hibernatetool> 

мой hibernate.cfg.xml является:

<hibernate-configuration> 
<session-factory> 
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> 
    <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>   
</session-factory>  

в моем файле POM Maven2 у меня есть:

<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>hibernate3-maven-plugin</artifactId> 
<version>2.2</version> 
<executions> 
<execution> 
    <id>hbm2java</id> 
    <phase>generate-sources</phase> 
    <goals> 
    <goal>hbm2java</goal> 
    </goals> 
    <configuration> 
    <components> 
    <component> 
    <name>hbm2java</name> 
    <implementation>configuration</implementation> 
    <outputDirectory>/src/main/java</outputDirectory> 
    </component> 
    </components> 
    <componentProperties> 
    <jdk5>true</jdk5> 
    <configurationfile>/src/main/resources/hibernate.cfg.xml</configurationfile> 
    </componentProperties> 
    </configuration>  
</execution> 

, но при выполнении mvn hibernate3:hbm2java я вижу, что файлы не генерируются, если они все не указаны в hiberna te.cfg.xml. Есть ли способ указать набор файлов в конфигурации maven, аналогичный муравьиной задаче?

спасибо, Наор

+0

Кто-нибудь нашел решение? У меня та же проблема. У меня нет рабочей базы данных и я не могу использовать hbm2cfgxml. –

ответ

3

Я не уверен, что это единственный путь, но я хотел бы использовать hbm2cfgxml первым для создания файла конфигурации hibernate.cfg.xml включая <mapping resource="..."/> записи, а затем hbm2java целью генерирования POJO,. Ниже, конфигурация делает это как часть вашей сборки:

<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>hbm2cfgxml</goal> 
     </goals> 
    </execution> 
    <execution> 
     <id>generate-entities</id> 
     <phase>generate-sources</phase> 
     <goals> 
     <goal>hbm2java</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <components> 
     <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> 
    <!-- your JDBC driver --> 
    ... 
    </dependencies> 
</plugin> 

Если файл src/main/database.properties содержит следующую информацию

hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver 
hibernate.connection.url=... 
hibernate.connection.username=... 
hibernate.connection.password=... 
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect 

Эта установка предполагает, что ваша .hbm.xml помещаются в src/main/resources (и, таким образом, будут скопированы в target/classes для обработки hbm2java).

+0

Спасибо за ответ Паскаль. Я забыл упомянуть, что мои сборки муравьев также генерируют мой сценарий ddl для создания базы данных как части сборки (другая цель). Я хочу сделать аналогичную вещь в моей сборке maven2, используя hbm2ddl. Требуется ли от вашего решения, чтобы моя база данных уже была создана для генерации cfg.xml? если да, то есть ли способ достичь этого, не указывая на существующую схему? – naor

+0

@naor Я не уверен, что он (информация о подключении к базе данных будет использоваться для создания hibernate.cfg.xml), и я не могу проверить это прямо сейчас. Но, может быть, вы можете поэкспериментировать. –

+0

Спасибо Паскаль. Я сделал местный тест. к сожалению, я вижу, что сгенерированное hibernate.cfg.xml отображает отображение на основе схемы, на которую я указываю. До сих пор я не мог найти никаких указаний на то, что плагин maven может поддерживать указатель на каталог, в котором находятся файлы сопоставления. моим следующим шагом будет перечисление файлов сопоставления вручную :-( – naor