1
8
创建一个名为commons jars的新工件,并将其打包为pom。它应该取决于您使用的所有常见的jar—spring、hibernate、log4j等。 然后,在你的每一场战争中,把它添加为对“提供的”范围的依赖(不要忘记将类型设置为pom)。你可以在课堂上看到它,但它们不会被包装成战争。这样,您还可以将特定于战争的依赖项打包到其中,解决方案来自 skinny wars 不提供。 |
2
61
正如您在评论中提到的,计算每个依赖关系是Maven的任务。当您创建一个工件时,使用每个公共依赖项,那么您还必须猜测哪些依赖项属于该工件。 也有可能,您必须部署一场战争,它依赖于另一台没有耳朵的机器,当您将每个战争依赖设置为“提供”时,就会再次陷入困境。 唯一正确的办法是,从以下例子中可以看出: http://maven.apache.org/plugins/maven-war-plugin/examples/skinny-wars.html 但是,现在有趣的是,有一个大的!捷径(完全消除了所提到的痛苦),告诉马文,你的战争有哪些依赖性。 进入你的EAR模块,用pom类型为每个战争依赖声明第二个对战争的依赖。
现在,每一场战争都将独立地打包成它自己的依赖项,EAR将打包成瘦的战争和lib文件夹中的每个依赖项。 更新: 请记住,EAR/lib文件夹不能用于像jboss eap 6这样的严格容器中的每个依赖jar。JSF组件库(如Tomahawk、PrimeFaces等)必须驻留在WEB-INF/LIB文件夹中。 使用上述解决方案实现这一点的一个简便方法是排除EAR pom.xml中的组件库,如下所示:
现在,除组件库外,战争的每个依赖项都将被放置在EAR/lib中,组件库将被放置在战争内部的WEB-INF/lib中。 |
3
4
您可以设置 dependancies scope “已提供”。这意味着它们将由其他模块提供,并且不会包含在最终JAR或WAR中。 也许 assembly plugin 可以帮助你包装最后一只耳朵,并在那里放置普通的罐子。 |