No estoy seguro de si está haciendo algo similar a lo que estoy haciendo, pero estoy generando una carga de fuente Java desde un XSD usando JAXB en un componente separado usando Maven. Digamos que este artefacto se llama "modelo base"
Quería importar este artefacto que contiene la fuente de Java y ejecutar hibernate sobre todas las clases en mi jar de artefacto "modelo base" y no especificar cada uno explícitamente. Estoy agregando "modelo base" como una dependencia para mi componente de hibernación, pero el problema es que la etiqueta en persistence.xml solo le permite especificar rutas absolutas.
La forma en que lo resolví es copiar mi dependencia de jar del "modelo base" explícitamente en mi directorio de destino y también eliminar la versión de la misma. Entonces, mientras que si construyo mi artefacto "modelo base", genera "modelo base-1.0-SNAPSHOT.jar", el paso de copia de recursos lo copia como "modelo base.jar".
Entonces, en su pom para el componente de hibernación:
<!-- 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>
Luego llamo al complemento de hibernación en la siguiente fase "clases de proceso":
<!-- 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>
y finalmente en mi persistence.xml puedo establecer explícitamente la ubicación del frasco así:
<jar-file>target/dependency/base-model.jar</jar-file>
y agregue la propiedad:
<property name="hibernate.archive.autodetection" value="class, hbm"/>