Не впевнений, чи ви робите щось подібне до того, що я роблю, але я створюю навантаження вихідної Java з XSD за допомогою JAXB в окремий компонент за допомогою Maven. Скажімо, цей артефакт називають "базовою моделлю"
Я хотів імпортувати цей артефакт, що містить джерело java, і перейти у сплячий режим над усіма класами в моїй базі артефактів «базової моделі», а не вказувати їх явно. Я додаю "базову модель" як залежність від мого сплячого компонента, але проблема полягає в тезі в persistent.xml дозволяє лише вказати абсолютні шляхи.
Те, як я її обійшов, - це скопіювати мою залежність від «базової моделі» відверто до мого цільового режиму, а також зняти її версію. Тож якщо я будую артефакт "базової моделі", він генерує "base-model-1.0-SNAPSHOT.jar", крок "copy-resources" копіює його як "base-model.jar".
Тож у твоєму значенні щодо сплячого компонента:
<!-- 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>
Тоді я називаю плагін у сплячому режимі на наступній фазі "процеси-класи":
<!-- 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>
і, нарешті, в моїй persistent.xml я можу явно встановити розташування банку таким чином:
<jar-file>target/dependency/base-model.jar</jar-file>
і додайте властивість:
<property name="hibernate.archive.autodetection" value="class, hbm"/>