может кто-нибудь сказать мне, как заставить maven предшествовать сопоставлению файлов .hbm.xml в автоматически сгенерированном спящем режиме .cfg.xml файл с пулом пакетов?Как настроить hibernate-tools с maven для генерации hibernate.cfg.xml, * .hbm.xml, POJO и DAO
Моя общая идея: я хотел бы использовать hibernate-tools через maven для создания слоя persistence для моего приложения. Итак, мне нужен hibernate.cfg.xml, затем все my_table_names.hbm.xml и в конце генерируется POJO. Тем не менее, hbm2java
цель не будет работать, как я ставлю * .hbm.xml файлы в папку src/main/resources/package/path/
но hbm2cfgxml
определяет отображение файлов только по имени таблицы, то есть:
<mapping resource="MyTableName.hbm.xml" />
Так что большой вопрос: как может настроить hbm2cfgxml
так, что hibernate.cfg.xml выглядит, как показано ниже:
<mapping resource="package/path/MyTableName.hbm.xml" />
Мой pom.xml выглядит, как это в данный момент:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>hbm2cfgxml</id>
<phase>generate-sources</phase>
<goals>
<goal>hbm2cfgxml</goal>
</goals>
<inherited>false</inherited>
<configuration>
<components>
<component>
<name>hbm2cfgxml</name>
<implemetation>jdbcconfiguration</implementation>
<outputDirectory>src/main/resources/</outputDirectory>
</component>
</components>
<componentProperties>
<packagename>package.path</packageName>
<configurationFile>src/main/resources/hibernate.cfg.xml</configurationFile>
</componentProperties>
</configuration>
</execution>
</executions>
</plugin>
И вот второй вопрос: есть ли способ сказать maven для копирования ресурсов в целевую папку перед выполнением hbm2java
? В настоящий момент я использую
mvn clean resources:resources generate-sources
для этого, но должен быть лучший способ.
Спасибо за любую помощь.
Update:
@Pascal: Спасибо за вашу помощь. Теперь путь к сопоставлениям прекрасен, но я не знаю, что было раньше. Возможно, есть проблема с записью hibernate.cfg.xml при чтении конфигурации базы данных (хотя файл обновляется).
Я удалил файл hibernate.cfg.xml, заменил его на database.properties и запустил цели hbm2cfgxml
и hbm2hbmxml
. Я также не использую outputDirectory
или configurationfile
в этих целях.
В результате файлы hibernate.cfg.xml
и все *.hbm.xml
сгенерированы в папку target/hibernate3/сгенерированные-сопоставления /, которая является значением по умолчанию. Тогда я обновил hbm2java
цели с нижеследующим:
<componentProperties>
<packagename>package.name</packagename>
<configurationfile>target/hibernate3/generated-mappings/hibernate.cfg.xml</configurationfile>
</componentProperties>
Но тогда я получаю следующее:
[INFO] --- hibernate3-maven-plugin:2.2:hbm2java (hbm2java) @ project.persistence ---
[INFO] using configuration task.
[INFO] Configuration XML file loaded: file:/C:/Documents%20and%20Settings/mmm/workspace/project.persistence/target/hibernate3/generated-mappings/hibernate.cfg.xml
12:15:17,484 INFO org.hibernate.cfg.Configuration - configuring from url: file:/C:/Documents%20and%20Settings/mmm/workspace/project.persistence/target/hibernate3/generated-mappings/hibernate.cfg.xml
12:15:19,046 INFO org.hibernate.cfg.Configuration - Reading mappings from resource : package.name/Messages.hbm.xml
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2java (hbm2java) on project project.persistence: Execution hbm2java of goal org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2java failed: resource: package/name/Messages.hbm.xml not found
Как справиться с этим? Конечно, я мог бы добавить:
<outputDirectory>src/main/resources/package/name</outputDirectory>
к hbm2hbmxml
цели, но я думаю, что это не самый лучший подход, или же это? Есть способ сохранить сгенерированный код и ресурсы у того же каталога src/
?
Я предполагаю, что целью этого подхода является не создание каких-либо источников в моей папке src/main/java или/resources, а сохранение сгенерированного кода в целевой папке.Поскольку я, как правило, согласен с этой точкой зрения, я хотел бы продолжить, в конечном итоге, выполнить hbm2dao
и упаковать проект, который будет использоваться в качестве сгенерированного компонента уровня сохранения из бизнес-уровня. Это тоже то, что вы имели в виду?
Спасибо за ваши замечания Паскаль. Я переместил выполнение в generate-resources, исправил опечатку. 1. Как настроить пользователя и пароль для спящего режима, если не hibernate.cfg.xml (или hibernate.properties)? Идея здесь в том, что hibernate.cfg.xml читается и обновляется, если были сделаны какие-либо изменения в модели данных. Существует ли более оптимальный подход? Все остальные параметры заставляют меня поддерживать одну и ту же конфигурацию в двух отдельных файлах с различным синтаксисом. Что касается моего второго вопроса, также спасибо за ваш ответ. Основной вопрос относительно путей/to/mapping остается открытым. – mmm
@mmm: Я обновил свой ответ, попробую. –
Спасибо за вашу помощь: он отлично работал. Я обновил свой вопрос. – mmm