在尝试查看此解决方案是否适用于我的项目时,How to share Persistence.xml between ejb module and web module in EAR?
我无法弄清楚Maven如何确定它在输出中打包文件的位置。
在我的Web项目中,它将依赖项放在/ WEB-INF / lib中。这是正确的地方,但我没有看到它。
在我的耳朵项目中,它将依赖项放在/中。这也是正确的地方,但我也没有看到它指定或知道如何覆盖它。
我希望我的耳朵项目中的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中,同时将它放在耳朵文件中/内部。
我希望我所遗漏的内容显而易见,但我似乎无法在教程或文档中轻松找到它。
答案 0 :(得分:0)
将共享库放在/ lib下的ear文件中的具体解决方案是为maven-ear-plugin设置defaultLibBundleDir标记。它会将<type>jar</type>
的任何依赖项放在ear文件的/ lib目录中。
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<defaultLibBundleDir>lib/</defaultLibBundleDir>
…
</plugin>