Je ne sais pas si vous faites quelque chose de similaire à ce que je fais, mais je génère une charge de source java à partir d'un XSD en utilisant JAXB dans un composant séparé en utilisant Maven. Disons que cet artefact est appelé "modèle de base"
Je voulais importer cet artefact contenant la source java et exécuter hibernate sur toutes les classes de mon jar d'artefact "modèle de base" et ne pas les spécifier explicitement. J'ajoute "base-model" comme dépendance pour mon composant hibernate mais le problème est que la balise dans persistence.xml vous permet seulement de spécifier des chemins absolus.
La façon dont je l'ai contourné est de copier explicitement ma dépendance jar "modèle de base" dans mon répertoire cible et de supprimer la version de celui-ci. Ainsi, alors que si je construis mon artefact "base-model", il génère "base-model-1.0-SNAPSHOT.jar", l'étape de copie-ressources le copie comme "base-model.jar".
Donc, dans votre pom pour le composant hibernate:
<!-- 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>
Ensuite, j'appelle le plugin hibernate dans la phase suivante "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>
et enfin dans mon persistence.xml, je peux définir explicitement l'emplacement du jar ainsi:
<jar-file>target/dependency/base-model.jar</jar-file>
et ajoutez la propriété:
<property name="hibernate.archive.autodetection" value="class, hbm"/>