【问题标题】:How to make maven copy all classes from another project?如何让 Maven 从另一个项目中复制所有类?
【发布时间】:2016-12-09 17:24:43
【问题描述】:

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

为了让 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 实体管理器的实体类。

当我尝试使用这些实体类时出现问题,因为不再注入实体管理器。此外,当我手动指定实体管理器时,它无法识别共享 jar 中的任何实体类。

【问题讨论】:

  • 您要复制标题和正文等类,还是复制示例所示的源文件?
  • 我不需要编译器(包括 aspectj 编织,以便能够看到 java 文件,就好像它们是同一个项目的一部分。
  • 我不明白。你能用你的确切用例、你有什么和你想要什么来编辑吗? aspectj 是如何以及何时出现的?
  • 我认为您正在开发一个包含多个模块的项目,并希望在执行构建任务时合并它们...您可以参考this 帖子如果你想...
  • 这正是我想做的。

标签: java maven jpa classpath


【解决方案1】:

试试 Unpacking specific artifacts

来自文档的示例配置:

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

【讨论】:

  • 这会起作用,只是 aspectj 编织没有完成。
猜你喜欢
  • 2012-09-08
  • 1970-01-01
  • 2012-01-13
  • 2020-08-20
  • 1970-01-01
  • 2018-03-24
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多