Как настроить плагин hbm2java maven2 для создания POJO для всех файлов сопоставления

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

<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>    

in my maven2 POM file I have:

<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 я вижу, что файлы не создаются, если все они не перечислены в hibernate.cfg.xml. Есть ли способ указать набор файлов в конфигурации maven, аналогичный задаче ant?

спасибо нет


person naor    schedule 30.05.2010    source источник
comment
Кто-нибудь нашел решение этого? Я с той же проблемой. У меня нет работающей базы данных, и я не могу использовать hbm2cfgxml.   -  person Andrew T Finnell    schedule 01.04.2012


Ответы (1)


Я не уверен, что это единственный способ, но я бы сначала использовал 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).

person Pascal Thivent    schedule 30.05.2010
comment
Спасибо за ответ Паскаль. Я забыл упомянуть, что мои муравьиные сборки также генерируют мой ddl-скрипт для создания базы данных как части сборки (другая цель). Я хочу сделать то же самое в моей сборке maven2, используя hbm2ddl. Ваше решение требует, чтобы моя база данных уже была создана для создания cfg.xml? если да, то есть ли способ добиться этого, не указывая на существующую схему? - person naor; 31.05.2010
comment
@naor Я не уверен, что это так (информация о подключении к базе данных будет использоваться для создания hibernate.cfg.xml), и я не могу это проверить прямо сейчас. Но, возможно, вы сможете поэкспериментировать. - person Pascal Thivent; 31.05.2010
comment
Спасибо, Паскаль. Я сделал локальный тест. К сожалению, я вижу, что сгенерированное отображение списков hibernate.cfg.xml основано на схеме, на которую я указываю. До сих пор я не мог найти никаких указаний на то, что плагин maven может поддерживать указание на каталог, в котором находятся файлы сопоставления. следующим шагом будет список файлов сопоставления вручную :-( - person naor; 01.06.2010