本文的读者需要拥有一些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之上的相应项目的运行操作或调试操作。至于是运行项目还是调试项目,只取决于你单击的条目是在“右箭头”按钮下还是在“小虫子”按钮下。从这方面来看,他们还是很智能化的。

其实上述配置并不复杂,我相信读者按照以上步骤去做是完全可以搞定的。分割线之前的问题是想引发大家关于软件易用性、兼容性方面的的一些思考。希望对这两点有兴趣的朋友回帖探讨。

本文出自 “Hyper Mind” 博客,请务必保留此出处http://freej.blog.51cto.com/235241/449339

Maven + Eclipse + Tomcat - 开启项目调试之旅(转载)相关推荐

  1. Eclipse tomcat Web页面调试

    Visual Age for Java是IBM所开发的Java IDE开发环境.早在几年前,就已经占了Java开发平台的半壁江山,而近来已有好长时间没出新版本了,原因在于IBM全心投入了Eclipse ...

  2. tomcat开启远程调试功能

    在日常开发中,有时需要对远程服务器上的应用进行远程调试,对于tomcat,要进行远程调试其实很简单,只需要在启动tomcat时开启jpda服务即可. 什么是JPDA呢? JPDA(Java Platf ...

  3. 真正解决问题:maven eclipse tomcat java.lang.ClassNotFoundException: org.springframework.web.context.Contex

    在使用eclipse进行整合springmvc时经常会碰到这样的异常: java.lang.ClassNotFoundException:org.springframework.web.context ...

  4. linux下tomcat开启远程调试

    1.center下,在startup.sh文件首行中添加如下语句 declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.com ...

  5. Windows/Linux服务器上Tomcat开启远程调试,使用IDEA本地调试

    注意:要保证本地的代码与服务器上部署的代码完全一致

  6. 持续集成工具集之四 Jenkins+Maven+Git+Tomcat 项目构建和自动部署

    上面安装和配置好Jenkins之后,就可以开始配置构建项目了 新建 因为需要构建的项目是maven项目,所以这里填好项目的名称之后选择"构建一个maven项目",然后点左下的ok ...

  7. 魅族魅蓝6t详细开启Usb调试模式的方法

    当我们使用安卓手机通过数据线链上Pc的时候,或者使用的有些工具比如我们学院营销小组当使用的工具引号精灵,以前使用的老版本就需要开启USB调试模式下使用,现当新版本不需要了,如果手机没有开启USB调试模 ...

  8. Eclipse+Tomcat+MAVEN+SVN项目完整环境搭建

    1.JDK的安装 首先下载JDK,这个从sun公司官网可以下载,根据自己的系统选择64位还是32位,安装过程就是next一路到底.安装完成之后当然要配置环境变量了. ----------------- ...

  9. 内置在maven项目的服务器,IDEA使用maven中tomcat插件来启动服务器配置

    一 .在项目pom文件中配置tomcat 先添加如下配置: org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.7 1.7 org.apach ...

最新文章

  1. Linkis生产部署服务器配置参考指南
  2. 不会提示是否关闭浏览器 IE6、IE7、FF通用代码
  3. 图像的存储格式转化(python实现)
  4. 14年数字化转型经验,总结出数据团队的5个级别,最后1个没人做到
  5. 想要酷炫大气的网页设计?这样做超吸睛
  6. laravel无法运行php,Laravel:php artisan服务无法启动
  7. R_多元相关和回归分析
  8. CAD中把样条曲线改成多线段
  9. HTML网页设计:二、网页的基本标签
  10. 400多个JavaScript特效大全
  11. win10定时语音提醒
  12. 有一种伪仪式感,叫“中国式旅行”
  13. flutter app使用大量网络图片导致频繁崩溃
  14. 关于travis scott的网名_女生时尚好听的qq网名
  15. 再更新:2022 京东/淘宝双11活动一键自动完成任务脚本app来了,顺便说个事情...
  16. Java实现 kiosk模式,適用於Linux Java Swing應用程序的Kiosk模式
  17. opencv lbp 草坪_框架还是语言? 离开我的草坪!
  18. 多线程就一定快吗?天真!
  19. 上传文件 后清空file
  20. 红帽linux 反编译,RedHat2018_Reverse

热门文章

  1. select2 属性标签整理
  2. PHPcms 把盛大登陆换成人人网登陆
  3. HDU 1850 Being a Good Boy in Spring Festival
  4. 证券市场中银行的分类和作用
  5. Linux安装QTCreator问题解决汇总
  6. MFC中char*,string和CString之间的转换
  7. Java—JVM的内存
  8. 大数据翻页_【干货】大数据翻页的难点和技巧
  9. 逻辑漏洞——会话管理问题
  10. java 上传源码_和付费网盘说再见,跟着本文自己起个网盘(Java)