设为首页 收藏本站
查看: 639|回复: 0

[经验分享] Maven + Eclipse + Tomcat

[复制链接]

尚未签到

发表于 2018-11-29 12:27:19 | 显示全部楼层 |阅读模式
  本文的读者需要拥有一些Maven基础知识和实践,如果没有,请直接绕过或者先看一些关于Maven教程,比如Juven翻译的《Maven权威指南》,google一下便知。
  开门见山,首先抛出一个问题(如果你对我遇到的问题不敢兴趣,请飘过,直接看分割线以下的文字):
  我有一个团队基础框架项目,代号:framework,用maven构建,是个war类型的项目。团队中其他的应用项目都会用到它,包括Java程序和Web相关的一些文件(js、css和html等公共组件)。所以我在package的时候产出了多个构建,包括:包含Java程序的jar文件(classifier为bin)和包含Web公共组件的zip文件(classifier为webcontent)等,并发布到了svn上。因为众多项目中用纯Eclipse和Eclipse+Maven构建的都不在少数,所以我认为这样将将框架打包发布是最平衡的一种方式。
  在我负责的一个应用项目中(这个项目是用Eclipse+Maven构建的,暂且叫他应用项目A)的pom的依赖中包含了这个framework项目,且classifier设置为bin。用maven-tomcat-plugin的方式部署运行是没问题的,应用项目A的WEB-INF/lib目录中会被自动添加framework-bin-.jar文件,但是在这种用命令行启动maven-tomcat-plugin运行项目的情况下是无法停在断点并进行调试的。而后,我只能试图用eclipse环境下设置的Tomcat启动应用项目A,但是这时会报出找不到framework中的一些类定义的错误。其实,如果framework项目是个jar类型的Maven项目的话这种错误是不会出现的,因为m2eclipse会在发布的时候自动将framework打成jar包并放入应用项目A的WEB-INF/lib目录中去。这一点m2eclipse做的非常好,毫无疑问。但是问题是,framework是以Web项目形式存在的,即:类型是war。在这种情况下,m2eclipse打的framework项目的jar包的内部实际上是war包的结构。也就是说,其中的结构完全是Web项目的,包含了WEB-INF等文件夹,真正需要用到的Java程序也被放入了WEB-INF/classes目录中。前面我们说将应用项目A的framework项目依赖的classifier设置为了bin,在framework项目中也加入了classifier为bin的打包配置,并部署到了Maven私库中。但是m2eclipse在配合应用项目A在eclipse环境下的Tomcat部署时并没有关注到classifier。我怀疑是m2eclipse不妥的一个地方,而不是我的配置问题。
  -----------这里是分割线-----------
  以上是我遇到的问题,在用N种方法无效的情况下,我想到了直接用maven-tomcat-plugin来部署、运行和调试应用项目A。Juven的《Maven实战》中可能会有介绍,但是书没在办公室,也不便查看:)。网上找到了一些资料,都很繁琐。最后看到了一篇国外的文章:http://docs.codehaus.org/display/MAVENUSER/Dealing+with+Eclipse-based+IDE。从中获知在Maven的2.0.8版本之前,在Eclipse+Tomcat的环境下调试Maven项目确实需要做很多配置,但是在2.0.8版本之后就方便多了。具体方式如下:
  1、在安装了m2eclipse插件并配置好maven-tomcat-plugin后,单击Eclipse菜单“Run”中的“Run Configurations”。
  2、在弹出的对话框中的左侧树中找“到Maven Build”,在其上点击右键并单击“New”。
  3、在右侧的“Name”一栏填入自定义的名称。单击在“Main”选项卡的“Browse Workspace”按钮,选择目标项目,选择后在“Base directory”一栏中会出现形如“${workspace_loc:/project_a}”的内容(project_a是前文所述应用项目A,它会根据你所选的目标项目而改变)。
  4、在“Goals”一栏中填入“tomcat:run”。
  5、在“Maven Runtime”选择你需要的Maven环境(注意:必须是2.0.8以上的版本)。
  6、单击“Apply”,配置完成。
  经过测试,通过以上配置,在eclipse自身的Run(“右箭头”)和Debug(“小虫子”)按钮下都会找到以你先前配置中“Name”值为名的条目(条目最前端也会有“m2”标识),单击之后即可启动基于Tomcat之上的相应项目的运行操作或调试操作。至于是运行项目还是调试项目,只取决于你单击的条目是在“右箭头”按钮下还是在“小虫子”按钮下。从这方面来看,他们还是很智能化的。
  其实上述配置并不复杂,我相信读者按照以上步骤去做是完全可以搞定的。分割线之前的问题是想引发大家关于软件易用性、兼容性方面的的一些思考。希望对这两点有兴趣的朋友回帖探讨。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-641165-1-1.html 上篇帖子: Intellij IDEA 11.1.4配置JRebel热部署Tomcat 下篇帖子: tomcat环境下共享session
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表