我在共享项目中有许多实体类。
为了让JPA正常工作,我需要在classes文件夹中而不是jar中包含这些类文件。
我如何在maven中这样做? 我可以使用特定的maven插件吗?
project1/src/main/java/org/something/SomeClass.java
project2/src/main/java/org/somethingElse/SomeEntity.java
目标:
project1/target/classes/org/something/SomeClass.java
project1/target/classes/org/somethingElse/SomeEntity.java
替代方法也可以。
用例:
我有多个项目 一个项目是所有共享内容的核心库 这包括一堆注入了PersistanceUnit Entity Managers的实体类。
当我尝试使用这些实体类时会出现问题,因为不再注入实体管理器。另外,当我手动指定实体管理器时,它不会识别共享jar中的任何实体类。
答案 0 :(得分:1)
尝试 Unpacking specific artifacts
来自docs的示例配置:
<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>unpack</id> <phase>package</phase> <goals> <goal>unpack</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <type>jar</type> <overWrite>false</overWrite> <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory> <destFileName>optional-new-name.jar</destFileName> <includes>**/*.class,**/*.xml</includes> <excludes>**/*test.class</excludes> </artifactItem> </artifactItems> <includes>**/*.java</includes> <excludes>**/*.properties</excludes> <outputDirectory>${project.build.directory}/wars</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>true</overWriteSnapshots> </configuration> </execution> </executions> </plugin> </plugins> </build> [...] </project>