Myeclipse maven插件中pom.xml的默认依赖有意义吗?
如图所示,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默认引入依赖有什么存在的意义?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先可以确定的是,这些不是Maven POM的默认引入, 笔者从事maven 多年, 都是需要用什么包 都是自己在POM里面添加的,唯一可能的是会吧JDK的包引入进来,当然了 这也是可以理解的,maven是运行在jdk之上的,楼主的这个情况我觉得是IDE 本身的问题,可能是MyEclipse的maven插件 有些特别的配置,或者是有附加的类库等。
建议楼主 通过命令行窗口进行打包构建这是最干净可靠的
比如: mvn clean compile war:war