Không chắc liệu bạn có đang làm điều gì đó tương tự như những gì tôi đang làm hay không, nhưng tôi đang tạo một tải java nguồn từ XSD bằng cách sử dụng JAXB trong một thành phần riêng biệt bằng Maven. Giả sử tạo tác này được gọi là "mô hình cơ sở"
Tôi muốn nhập cấu phần phần mềm này có chứa nguồn java và chạy chế độ ngủ đông trên tất cả các lớp trong jar tạo tác "mô hình cơ sở" của tôi và không chỉ định rõ ràng từng lớp. Tôi đang thêm "base-model" làm phần phụ thuộc cho thành phần ngủ đông của mình nhưng vấn đề là thẻ trong Persence.xml chỉ cho phép bạn chỉ định đường dẫn tuyệt đối.
Cách tôi đã làm được là sao chép rõ ràng sự phụ thuộc vào jar "base-model" của tôi vào dir mục tiêu của tôi và cũng loại bỏ phiên bản của nó. Vì vậy, trong khi nếu tôi xây dựng tạo tác "base-model", nó tạo ra "base-model-1.0-SNAPSHOT.jar", thì bước copy-resources sẽ sao chép nó thành "base-model.jar".
Vì vậy, trong pom của bạn cho thành phần ngủ đông:
<!-- 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>
Sau đó, tôi gọi plugin ngủ đông trong giai đoạn tiếp theo là "process-class":
<!-- 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>
và cuối cùng trong kiên trì.xml của tôi, tôi có thể đặt rõ ràng vị trí của cái lọ do đó:
<jar-file>target/dependency/base-model.jar</jar-file>
và thêm thuộc tính:
<property name="hibernate.archive.autodetection" value="class, hbm"/>