내가하고있는 것과 비슷한 일을하고 있는지 확실하지 않지만 Maven을 사용하여 별도의 구성 요소에서 JAXB를 사용하여 XSD에서 소스 Java로드를 생성합니다. 이 아티팩트를 "기본 모델"이라고 가정 해 보겠습니다.
Java 소스가 포함 된이 아티팩트를 가져 와서 "기본 모델"아티팩트 jar의 모든 클래스에 대해 최대 절전 모드를 실행하고 각각을 명시 적으로 지정하지 않으려 고했습니다. 내 최대 절전 모드 구성 요소에 대한 종속성으로 "base-model"을 추가했지만 문제는 persistence.xml의 태그가 절대 경로를 지정할 수만 있다는 것입니다.
내가 얻은 방법은 내 "기본 모델"jar 종속성을 내 대상 디렉토리에 명시 적으로 복사하고 버전을 제거하는 것입니다. 따라서 "base-model"아티팩트를 빌드하면 "base-model-1.0-SNAPSHOT.jar"이 생성되지만 복사 리소스 단계에서는 "base-model.jar"로 복사합니다.
따라서 최대 절전 구성 요소에 대한 pom에서 :
<!-- 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>
그런 다음 다음 단계에서 "process-classes"에서 hibernate 플러그인을 호출합니다.
<!-- 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>
마지막으로 persistence.xml에서 jar의 위치를 명시 적으로 설정할 수 있습니다.
<jar-file>target/dependency/base-model.jar</jar-file>
속성을 추가합니다.
<property name="hibernate.archive.autodetection" value="class, hbm"/>