Nie jestem pewien, czy robisz coś podobnego do tego, co robię, ale generuję ładunek javy źródłowej z XSD przy użyciu JAXB w osobnym komponencie przy użyciu Maven. Powiedzmy, że ten artefakt nosi nazwę „model podstawowy”
Chciałem zaimportować ten artefakt zawierający źródło Java i uruchomić hibernację dla wszystkich klas w moim pliku jar artefaktu „modelu podstawowego” i nie określać każdej jawnie. Dodam „model podstawowy” jako zależność dla mojego komponentu hibernacji, ale problem polega na tym, że tag w persistence.xml pozwala tylko na określenie ścieżek bezwzględnych.
Sposób, w jaki sobie z tym poradziłem, polega na jawnym skopiowaniu mojej zależności jar "modelu bazowego" do katalogu docelowego, a także na usunięciu jego wersji. Więc podczas gdy jeśli zbuduję mój artefakt „modelu bazowego”, wygeneruje on „base-model-1.0-SNAPSHOT.jar”, krok kopiowania zasobów kopiuje go jako „base-model.jar”.
Więc w pompie dla komponentu hibernacji:
<!-- 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>
Następnie nazywam wtyczkę hibernacji w następnej fazie „klasy procesów”:
<!-- 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>
i wreszcie w moim persistence.xml mogę wyraźnie ustawić lokalizację jar w ten sposób:
<jar-file>target/dependency/base-model.jar</jar-file>
i dodaj właściwość:
<property name="hibernate.archive.autodetection" value="class, hbm"/>