Maven Common依赖关系多个项目将jar从战争中排除

时间:2019-07-23 12:19:53

标签: maven dependencies myeclipse

我们的环境中有多个Web项目(超过100个),自定义jar和REST Web服务项目。我们正在使用ANT与Jboss5.2.1进行构建,我正尝试使用MyEclipse 2019迁移到Maven并部署到Tomcat服务器。所需的所有常见jar都在Jboss / server / default / lib中,并已添加到Web项目的构建路径中。我们不希望将依赖项jar打包到WAR文件中。使用Maven,依赖关系被添加到战争中,从而增加了战争规模。我们希望将这些依赖项(例如gson,poi等)放在一个普通的地方,并使用构建路径进行引用。那有可能吗?

我确实读过有关使用系统范围的信息。但是,由于不建议这样做,不建议这样做,所以我不想走这条路。用父项目设置本地Maven存储库似乎也不会对我们有用,因为我不希望WAR的lib文件夹中有依赖项jar。

在这种情况下,是否采用Maven甚至是正确的方法?默认情况下,MyEclipse CI 2019将所有Web项目创建为Maven项目。因此,如果这不是适合我们的构建工具,那么我将不得不找出一种禁用该方法的方法。

将依赖项jar打包到WAR中在这里是不被接受的,因为部署团队感到不必要地浪费了每个WAR的大小。我是Maven的新手,正在尝试以正确的方式设置项目。谢谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您希望服务器在运行时提供一些常见的jar,而不是将它们打包到每次战争中。

所以您必须做两件事:

  • 将罐子添加到服务器(Jboss / Tomcat)中,以便它们在运行时可用。
  • 将罐子添加为provided依赖项,以进行需要它们的战争。这意味着您定义了对它们的依赖关系,但设置了<scope>provided</provided>

这样的结果是,依赖项在编译时可用,但没有捆绑到战争中。

但是请注意,拥有许多公共库会使更新其中一个库变得困难。