Не уверен, что вы делаете что-то похожее на то, что делаю я, но я генерирую загрузку исходного кода java из XSD с использованием JAXB в отдельном компоненте с помощью Maven. Допустим, этот артефакт называется «базовая модель».
Я хотел импортировать этот артефакт, содержащий исходный код java, и запустить спящий режим для всех классов в моем банке артефактов «базовой модели» и не указывать каждый явно. Я добавляю «базовую модель» в качестве зависимости для моего компонента спящего режима, но проблема в том, что тег в persistence.xml позволяет указывать только абсолютные пути.
Способ, которым я это обошел, - это явно скопировать мою зависимость jar «базовой модели» в мой целевой каталог, а также удалить ее версию. Итак, если я создаю свой артефакт «базовая модель», он генерирует «base-model-1.0-SNAPSHOT.jar», шаг копирования ресурсов копирует его как «base-model.jar».
Итак, в вашем pom для компонента гибернации:
<!-- We want to copy across all our artifacts containing java code
generated from our scheams. We copy them across and strip the version
so that our persistence.xml can reference them directly in the tag
<jar-file>target/dependency/${artifactId}.jar</jar-file> -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>process-resources</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
<configuration>
<includeArtifactIds>base-model</includeArtifactIds>
<stripVersion>true</stripVersion>
</configuration>
</plugin>
Затем я вызываю плагин hibernate на следующем этапе «process-classes»:
<!-- Generate the schema DDL -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>generate-ddl</id>
<phase>process-classes</phase>
<goals>
<goal>hbm2ddl</goal>
</goals>
</execution>
</executions>
<configuration>
<components>
<component>
<name>hbm2java</name>
<implementation>annotationconfiguration</implementation>
<outputDirectory>/src/main/java</outputDirectory>
</component>
</components>
<componentProperties>
<persistenceunit>mysql</persistenceunit>
<implementation>jpaconfiguration</implementation>
<create>true</create>
<export>false</export>
<drop>true</drop>
<outputfilename>mysql-schema.sql</outputfilename>
</componentProperties>
</configuration>
</plugin>
и, наконец, в моем persistence.xml я могу явно указать местоположение банки следующим образом:
<jar-file>target/dependency/base-model.jar</jar-file>
и добавьте свойство:
<property name="hibernate.archive.autodetection" value="class, hbm"/>