在 EAR 文件中,EAR 级别的 lib 文件夹跨越所有 Web 应用程序(即 EAR 中的所有 .war)。.war 中的 lib 用于仅对 web-app war 可用的库。
很多时候,您必须将特定库提升到 EAR 级别并设置类路径加载器首选项优先级设置(在提供的应用程序服务器和提供的 EAR 之间)jar。这是 WebSphere 等服务器的常见需求。
这是 maven 的示例战争配置,其中从 EAR 级别检索特定的 jar,并专门从 WAR 中排除:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<archive>
<manifestEntries>
<Class-Path>lib/wsdl4j-1.6.2.jar lib/mail-1.4.jar</Class-Path>
</manifestEntries>
</archive>
<packagingExcludes>WEB-INF/lib/wsdl4j-1.6.2.jar,WEB-INF/lib/mail-1.4.jar</packagingExcludes>
<warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>
<warSourceExcludes>WEB-INF/jetty-env.xml</warSourceExcludes>
</configuration>
</plugin>