`
hyper-carrot
  • 浏览: 6694 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类

Maven + Eclipse + Tomcat - 开启项目调试之旅

阅读更多
    本文的读者需要拥有一些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
3
分享到:
评论

相关推荐

    eclipse-jee-2020-09-R-win32-x86_64.zip

    标题中的“eclipse-jee-2020-09-R-win32-x86_64.zip”指的是Eclipse IDE for Java EE Developers的2020年9月版本,适用于Windows ...用户可以通过解压并运行其中的安装程序来安装Eclipse,开始他们的Java EE开发之旅。

    eclipse-jee-2023-06-R-linux-gtk-x86-64.tar.gz

    标题中的“eclipse-jee-2023-06-R-linux-gtk-x86-64.tar.gz”指的是Eclipse集成开发环境(IDE)的一个特定版本,...通过下载并解压此tar.gz文件,用户可以在Linux环境中安装并启动Eclipse,开始他们的Java EE开发之旅。

    eclipse-oxygen-win64.rar

    Eclipse Oxygen是Eclipse IDE的第47个版本,专为Java开发人员设计,同时也支持多种其他编程语言。这个版本的Eclipse引入了许多新特性...通过解压并安装这个压缩包,你将获得一个功能强大的开发环境,开启你的编程之旅。

    eclipse-jee-2022-12-R-linux-gtk-x86-64.tar.gz

    用户可以直接运行解压后的“eclipse”文件启动IDE,开始他们的JEE开发之旅。 总之,Eclipse是一款功能强大且高度可定制的开发工具,对于JEE开发者来说,它提供了一个全面的平台,可以满足从项目创建、编码、测试到...

    eclipse_4.6.3-jee-neon-3-win32-x86_64

    《Eclipse 4.6.3 JEE Neon 3 for Windows x86_64:专业Java集成开发环境详解》 ...通过下载这个压缩包,你将获得一个完整的Eclipse安装文件,只需简单几步即可在Windows x86_64环境下开始你的Java编程之旅。

    Eclipse,MyEclipse开发Web项目.doc

    通过以上步骤,你就可以在Eclipse和MyEclipse中开始你的Web项目开发之旅了。这两个IDE提供了丰富的插件生态系统,可以帮助你高效地完成从编码、调试到部署的全过程。在实际开发中,你还可以根据需求安装额外的插件,...

    eclipse-jee2020.6.rar

    Eclipse JEE 2020.6 是一个专为Java和Web开发设计的强大集成开发环境(IDE)。这个版本发布于2020年6月,集成了...通过下载并安装这个压缩包,你可以拥有一个功能齐全、高效便捷的开发环境,开启你的Java Web开发之旅。

    eclipse安装包.7z

    安装完成后,用户就可以在Eclipse中创建项目,开始他们的编程之旅了。 总之,Eclipse是一个功能全面、可定制性强的开发平台,无论你是Java开发者,还是C++、Python或其他语言的爱好者,都可以在Eclipse的帮助下提升...

    Eclipse中文教程

    Eclipse是一款广泛使用的开源集成开发环境(IDE),尤其...通过阅读"Eclipse中文教程.pdf",初学者将逐步熟悉Eclipse的各个方面,为编程之旅打下坚实的基础。同时,不断实践和探索,才能更好地发挥Eclipse的强大功能。

    eclipse.zip

    Eclipse 是一个著名的开源集成开发环境(IDE),主要用于编写Java应用程序。它以其强大的功能、高度可扩展性和灵活性而闻名。Eclipse JavaEE版本是专为Java企业...通过解压并运行,你就可以开启你的JavaEE编程之旅了。

    基于SpringBoot的旅游网站的设计与实现-基于SpringBoot的旅游网站的设计与实现论文-java-文档

    - **Maven**:项目管理和综合工具,本项目采用Maven3.6版本进行依赖管理。 - **MySQL**:关系型数据库管理系统,版本为5.7。 6. **服务平台**:Tomcat 8.0/9.0作为Web服务器,用于部署项目。 7. **数据库工具**:...

    Struts 2 自学之路: 1 准备工作及helloworld

    本篇文章将带你踏上Struts 2的自学之旅,首先从准备工作开始,然后通过一个简单的“Hello, World”程序来熟悉基本操作。 准备工作: 1. **环境配置**:首先确保你的计算机上已经安装了Java Development Kit (JDK)...

    myeclipse7.0注册码

    - **项目管理和构建工具**:内置了Ant和Maven等构建工具,简化了项目的构建和管理流程。 - **数据库集成**:通过JDBC与多种数据库进行连接,支持SQL查询、数据表操作等,便于进行数据库相关的开发工作。 - **Web和...

    java自学==servlet

    Java自学之路——深入理解Servlet 在Java Web开发中,Servlet是一个不可或缺的核心技术,它是一种用于扩展服务器...记住,实践是最好的老师,不断动手编写代码,遇到问题解决问题,你的Java自学之旅将会更加丰富多彩。

    JBPM4工作流应用开始指南.rar

    35 2.8 安装jBPM数据库 35 2.8.1 新数据库安装 36 2.8.2 升级旧的数据库 36 2.9 安装图形化流程设计器(GPD) 37 2.9.1 获取Eclipse 37 2.9.2 在Eclipse中安装GPD插件 37 2.9.3 配置jBPM运行环境 38 2.9.4 添加jPDL4...

Global site tag (gtag.js) - Google Analytics