Non sono sicuro se stai facendo qualcosa di simile a quello che sto facendo, ma sto generando un carico di java sorgente da un XSD usando JAXB in un componente separato usando Maven. Diciamo che questo artefatto si chiama "modello base"
Volevo importare questo artefatto contenente l'origine java ed eseguire l'ibernazione su tutte le classi nel mio vaso di artefatto "modello base" e non specificarlo esplicitamente. Sto aggiungendo "base-model" come dipendenza per il mio componente di ibernazione, ma il problema è che il tag in persistence.xml ti consente solo di specificare percorsi assoluti.
Il modo in cui ho aggirato la cosa è copiare la mia dipendenza da jar "base-model" esplicitamente nella mia directory di destinazione e rimuovere anche la versione di esso. Quindi, mentre se costruisco il mio artefatto "base-model" esso genera "base-model-1.0-SNAPSHOT.jar", il passaggio copy-resources lo copia come "base-model.jar".
Quindi nel tuo pom per il componente di ibernazione:
<!-- 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>
Quindi chiamo il plug-in di ibernazione nella fase successiva "classi di processo":
<!-- 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>
e infine nel mio persistence.xml posso impostare esplicitamente la posizione del jar così:
<jar-file>target/dependency/base-model.jar</jar-file>
e aggiungi la proprietà:
<property name="hibernate.archive.autodetection" value="class, hbm"/>