Benim yaptığıma benzer bir şey yapıp yapmadığınızdan emin değilim, ama Maven kullanarak ayrı bir bileşende JAXB kullanarak bir XSD'den bir kaynak java yükü oluşturuyorum. Bu yapının "temel model" olarak adlandırıldığını varsayalım
Java kaynağını içeren bu yapıyı içe aktarmak ve "temel model" yapay kavanozumdaki tüm sınıflar üzerinde hazırda bekletme modunu çalıştırmak ve her birini açıkça belirtmek istemedim. Hazırda bekletme bileşenime bağımlılık olarak "temel model" ekliyorum, ancak sorun, kalıcılık.xml'deki etiketinin yalnızca mutlak yolları belirtmenize izin vermesidir.
Bunu aşma şeklim, "temel model" jar bağımlılığımı açık bir şekilde hedef dizinime kopyalamak ve aynı zamanda sürümünü çıkarmaktır. Dolayısıyla, "temel model" yapımı oluşturursam, "temel model-1.0-SNAPSHOT.jar" üretirken, kaynakları kopyala adımı onu "temel model.jar" olarak kopyalar.
Öyleyse hazırda bekletme bileşeni için pomunuzda:
<!-- 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>
Sonra bir sonraki aşamada hazırda bekletme eklentisini "işlem sınıfları" olarak adlandırıyorum:
<!-- 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>
ve son olarak, kalıcılık.xml dosyamda kavanozun konumunu şu şekilde açıkça ayarlayabilirim:
<jar-file>target/dependency/base-model.jar</jar-file>
ve mülkü ekleyin:
<property name="hibernate.archive.autodetection" value="class, hbm"/>