【发布时间】:2014-07-24 19:08:25
【问题描述】:
在尝试查看此解决方案是否适用于我的项目时,How to share Persistence.xml between ejb module and web module in EAR?
我无法弄清楚 Maven 如何确定它在输出中打包文件的位置。
在我的 web 项目中,它将依赖项放在 /WEB-INF/lib 中。这是正确的地方,但我没有看到它指定。
在我的 ear 项目中,它将依赖项放在 /.这也是正确的地方,但我也没有看到它指定或知道如何覆盖它。
我希望我的 ear 项目中的 web、ejb 和其他依赖项继续转到 /,但我希望将我的 jpa/domain jar 放在 /lib 中。
我试过了:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>my.group.org</groupId>
<artifactId>myJpaProject</artifactId>
<type>jar</type>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</artifactItem>
</artifactItems>
<!-- other configurations here -->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
但这会将 jar 放在 /target/lib/myJpaProject.jar 中,同时将其放在 ear 文件中的 / 中。
我希望我缺少的东西是显而易见的,但我似乎无法在教程或文档中轻松找到它。
【问题讨论】:
-
您尝试做的不是 Java EE 5 或 Java EE 6 标准的一部分。那么你期待什么呢?
-
我只是想测试上面链接中给出的可能性。大多数情况下,我认为我正在寻找使用 gnu make 之类的构建工具对打包的控制——如何指定我希望将依赖项打包的位置?
-
通常打包在
target文件夹和一些与运行构建过程无关的临时文件夹中完成。有一点非常重要。 Maven 不是 Make。在target文件夹中,您会找到包含这些东西的 ArtifactName-Version 文件夹。 -
因此,执行上述操作后,我将 myJpaProject.jar 放入了正确的目标文件夹,但不在 jar 中的正确位置,所以我猜测 phase=package 不在打包之前,但也许只是后。我将尝试选择一个较早的阶段,看看它是否会出现在 jar 的新位置。 Maven 是一种构建工具,因此虽然它不是 make 或 Ant,但它的开发应该朝着提供竞争对手提供的所有功能和灵活性的方向发展。
标签: java maven jakarta-ee jpa