Myeclipse maven插件中pom.xml的默认依赖有意义吗?

itwriter 发布于 2015/08/04 16:30
阅读 1K+
收藏 0

如图所示,pom.xml默认引入这一大堆东西。内含一个javassist的jar(它作为osgi框架的依赖包被默认引入,这里因为引用列表太长,没截出来)。

当我add struts2的依赖后发现,项目跑不起来,报错。控制台告诉我缺javassist,当时我就不理解了,因为maven的引用列表告诉我它已经引用了。

实验发现,Maven这些默认引入的jar都不会被拷贝到运行的WEB-INF/lib下,所以,我要使用struts2,让lib下存在javassist.jar,得先去除默认的javassist依赖,再手动给pom.xml添加javassist依赖才行。

最后问题解决,控制台也不再提示我缺包了。

但我依然很不明白,maven既然不帮我把jar拷贝到执行环境中,那么给我默认引入这么多jar搞毛啊?

J2EE的依赖我还能理解,因为tomcat容器已经有相应的J2EE接口实现,再引入的话会造成jar冲突。但另外的一些jar如javassist没有冲突问题,但如果真要用到,我还得手动去除依赖再手动引入依赖,总之用户体验很糟很糟。

所以我不明白,这些maven默认引入依赖有什么存在的意义?

加载中
1
Garrry
Garrry

首先可以确定的是,这些不是Maven POM的默认引入, 笔者从事maven 多年, 都是需要用什么包 都是自己在POM里面添加的,唯一可能的是会吧JDK的包引入进来,当然了 这也是可以理解的,maven是运行在jdk之上的,楼主的这个情况我觉得是IDE 本身的问题,可能是MyEclipse的maven插件 有些特别的配置,或者是有附加的类库等。

建议楼主 通过命令行窗口进行打包构建这是最干净可靠的

比如: mvn clean compile war:war

返回顶部
顶部