如何让maven从另一个项目中复制所有类?

时间:2016-12-09 17:24:44

标签: java maven jpa classpath

我在共享项目中有许多实体类。

为了让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中的任何实体类。

1 个答案:

答案 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>