ไม่แน่ใจว่าคุณกำลังทำสิ่งที่คล้ายกับสิ่งที่ฉันกำลังทำอยู่ แต่ฉันกำลังสร้างซอร์สจาวาจาก XSD โดยใช้ JAXB ในองค์ประกอบแยกโดยใช้ Maven สมมติว่าสิ่งประดิษฐ์นี้เรียกว่า "base-model"
ฉันต้องการนำเข้าอาร์ติแฟกต์นี้ที่มีซอร์สจาวาและรันไฮเบอร์เนตในทุกคลาสในโถอาร์ติแฟกต์ "โมเดลพื้นฐาน" ของฉันและไม่ได้ระบุแต่ละอันอย่างชัดเจน ฉันกำลังเพิ่ม "base-model" เป็นการอ้างอิงสำหรับองค์ประกอบ hibernate ของฉัน แต่ปัญหาคือแท็กใน persistence.xml อนุญาตให้คุณระบุพา ธ สัมบูรณ์เท่านั้น
วิธีที่ฉันได้รับรอบนี้คือการคัดลอกการพึ่งพา jar "แบบจำลองพื้นฐาน" ของฉันอย่างชัดเจนไปยังผบ. เป้าหมายของฉันและดึงเวอร์ชันของมันออกด้วย ดังนั้นในขณะที่ฉันสร้างสิ่งประดิษฐ์ "แบบจำลองพื้นฐาน" ของฉันมันจะสร้าง "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":
<!-- 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-file>target/dependency/base-model.jar</jar-file>
และเพิ่มคุณสมบัติ:
<property name="hibernate.archive.autodetection" value="class, hbm"/>