`
skzr.org
  • 浏览: 354992 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

[MAVEN]web工程的调试

 
阅读更多

 

接上篇:[MAVEN]maven最佳实践 

maven风格的WEB程序怎样调试?

 

标准web目录结构

src/main/java

Application/Library sources

src/main/resources

Application/Library resources

src/main/filters

Resource filter files

src/main/assembly

Assembly descriptors

src/main/config

Configuration files

src/main/scripts

Application/Library scripts

src/main/webapp

Web application sources

src/test/java

Test sources

src/test/resources

Test resources

src/test/filters

Test resource filter files

src/site

Site

LICENSE.txt

Project's license

NOTICE.txt

Notices and attributions required by libraries that the project depends on

README.txt

Project's readme

 

web项目调试最佳实践

  • 问题,jar都让maven管理了,web-inf/lib下没有jar了,这个时候怎样调试web呢?
  • 原理:无论tomcat还是jetty作为web容器,最终启动他们的命令行都是:“java ....” 即他们都是标准的java应用程序启动方式,所以对于maven管理的web工程,手动添加jar到classpath即可了

编程方式使用tomcat调试maven war工程

 

  1. 定义tomcat配置文件:src/test/resources/tomcat.properties
    catalina.home=/prog/apache/apache-tomcat-7.0.27-dev
    catalina.base=/workspace/com.talkyun.flex/Servers/dev-cloud-site
     
  2. TomcatStart.java启动代码:src/test/java/server/TomcatStart.java
    package server;
    
    import java.io.IOException;
    import java.lang.reflect.Method;
    import java.net.URL;
    import java.net.URLClassLoader;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.util.Properties;
    
    /** 启动tomcat */
    public class TomcatStart {
    	
    	/** 设置tomcat启动需要的classpath、catalina.home和catalina.base设置 */
    	private static void setTomcatEnv(Properties tomcatConfig) throws ReflectiveOperationException, IOException {
    		String catalinaHome = tomcatConfig.getProperty("catalina.home");
    		System.setProperty("catalina.home", catalinaHome);
    		System.setProperty("catalina.base", tomcatConfig.getProperty("catalina.base", catalinaHome));
    		
    		
    		Path bootstrapJar =  Paths.get(catalinaHome, "bin/bootstrap.jar"), tomcatJuliJar = bootstrapJar.resolveSibling("tomcat-juli.jar");
    		ClassLoader classloader = Thread.currentThread().getContextClassLoader();
    		Method addURLMethod = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
    		try {
    			addURLMethod.setAccessible(true);
    			addURLMethod.invoke(classloader, bootstrapJar.toUri().toURL());
    			addURLMethod.invoke(classloader, tomcatJuliJar.toUri().toURL());
    			try {
    				classloader.loadClass("javax.servlet.ServletContainerInitializer");
    			} catch (ClassNotFoundException e) {
    				addURLMethod.invoke(classloader, Paths.get(catalinaHome, "lib/servlet-api.jar").toUri().toURL());
    			}
    		} finally {
    			addURLMethod.setAccessible(false);
    		}
    	}
    	
    	/** 启动tomcat */
    	private static void start() throws ReflectiveOperationException {
    		Class<?> bootstrapClazz = Class.forName("org.apache.catalina.startup.Bootstrap");
    		Method main = bootstrapClazz.getDeclaredMethod("main", String[].class);
    		main.invoke(bootstrapClazz, (Object) new String[] {"start"});
    	}
    
    	/** 请在 classpath:/tomcat.properties中设定: catalina.home, catalina.base(默认使用catalina.home) */
    	public static void main(String[] args) throws Exception {
    		Properties tomcatConfig = new Properties();
    		tomcatConfig.load(TomcatStart.class.getResourceAsStream("/tomcat.properties"));
    		
    		setTomcatEnv(tomcatConfig);
    		start();
    	}
    
    }
    
     

 

 

tomcat调试maven web工程

  1. 定义Variable变量
    1. 打开首选项:Windows->Preferences

    2. 定义变量:Run/Debug -> String Substitution:选择右边的新建,建立变量,名称:TOMCAT_HOME,配置为tomcat的路径,如图:

  2. 定义一个java application debug启动:
    1. 打开Debug Configurations配置:Run -> Debug Configurations

    2. 选择左边的Java Application,右键新建一个新的Java Application启动配置:取名为:tomcat-dev
      1. Main选项卡:Main class输入:org.apache.catalina.startup.Bootstrap


         

      2. Arguments选项卡:
        • Program arguments配置填写:start

        • VM arguments配置填写:
          • -Dcatalina.home=${TOMCAT_HOME}
            -Dcatalina.base=${TOMCAT_HOME}
            -Djava.endorsed.dirs=${TOMCAT_HOME}/common/endorsed 
            -Djava.io.tmpdir=${TOMCAT_HOME}/temp 
            -Djava.library.path=${TOMCAT_HOME}/bin:/usr/local/apr/lib 
            -Dsun.io.useCanonCaches=false 
            -server
            

             
        • Working directory配置填写:Other: ${TOMCAT_HOME}

      3. Classpath选项卡:
        • 去掉项目的classpath,只保留Maven Dependencies项即可
        • 选中User Entries:按右边的Advanced添加三个jar包,如:在弹出的Advanced Options对话框中填写Add Variable String项目:${TOMCAT_HOME}/bin/bootstrap.jar

          • ${TOMCAT_HOME}/bin/bootstrap.jar
            ${TOMCAT_HOME}/bin/tomcat-juli.jar
            ${TOMCAT_HOME}/lib/servlet-api.jar
            

             

  • 大小: 87 KB
  • 大小: 98.2 KB
  • 大小: 122.6 KB
  • 大小: 159.5 KB
3
1
分享到:
评论
5 楼 skzr.org 2014-04-25  
首先感谢你的关注:)

yaerfeng1989 写道
最代码上有更详细的步骤文档:
如何在eclipse jee中检出项目并转换为Maven project,最后转换为Dynamic web project,地址:http://www.zuidaima.com/blog/1618180875144192.htm

如何在eclipse jee中创建Maven project并且转换为Dynamic web project,地址:http://www.zuidaima.com/blog/1618162161323008.htm


是的,如今的eclipse对maven的支持已经非常好了。我现在没有再采用这个方式调试了。
4 楼 skzr.org 2012-07-16  
补充了:编程方式使用tomcat调试maven war工程,更加简单的调试方式
3 楼 skzr.org 2011-12-20  
悲剧了 写道
这个一篇文章的写的有点少阿

非常的谢谢

呵呵,确实是少了点,这篇是接上篇接[MAVEN]maven最佳实践 的一个补充

目前maven还没深入,需要就学了下,现在还没搞明白site目录要怎样组织和书写
估计下一个补充就是关于《maven site站点的书写和组织》了。
2 楼 悲剧了 2011-12-19  
这个一篇文章的写的有点少阿
1 楼 skzr.org 2011-12-18  
按照标准的tomcat中配置应用,在${TOMCAT_HOME}/conf/Catalina/localhost/demo.xml配置一个web应用程序,我们运行此debug配置,就可以开发调试这个web工程了。

相关推荐

    MyEclipse_+_Maven开发Web工程的详细配置过程

    好久没做Web方面的开发,今天突然想弄弄SpringMVC,因为不久前又学了点Maven觉得非常好,所以在弄SpringMVC这个Web框架时想使用Maven来做,但是问题又来了,我一直是在Eclipse中使用Maven,而我以前一直用MyEclipse...

    maven tomcat

    eclipse中maven web工程tomcat调试

    maven的入门使用

    maven入门使用 maven创建web项目 maven生成eclipse项目 maven+jetty的使用 jetty在eclipse的配置和使用

    maven构建项目,core,dao,service分别打包-1.1.rar

    也可以在eclipse中右键mavencase-web将项目发布到tomcat(此时要把mavencase-core,mavencase-dao,mavencase-service工程关闭,不然报错,打的jar包有问题,不知为何), 此时能在eclipse中看mavencase-web的断点,...

    ideaSSM 工程车辆人员管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目源

    idea 开发 SSM 工程车辆人员管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要...

    基于SSH2+Maven+EasyUI+MySQL技术实战开发易买网电子商务交易平台

    jQuery EasyUI简称jeasyui,也就叫easyui,是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有...

    GeoServer开发手册系列

    由Maven生成Eclipse工程文件 9 导入模块进Eclipse 9 在Eclipse中运行GeoServer 12 访问GeoServer首页 13 Maven指南 13 安装Maven 13 运行Maven 13 构建 13 跳过测试 14 离线构建 14 构建扩展 14 Profiles 15 Eclipse...

    工具箱(java开发中常用工具类,web工程中常用的Filter等).zip

    包括编译器、构建工具(如Make、Gradle、Maven)等,用于将源代码转换为可执行文件或库,并进行资源打包、优化等处理。 调试与测试: 集成调试器允许开发者逐行执行代码,设置断点、查看变量值、跟踪调用堆栈等...

    基于SSM框架+mysql的电子商城web系统项目源码+项目说明.zip

    3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于SSM框架+mysql的电子商城web系统项目源码+项目说明.zip ### 项目内容:SSM(Spring+Springmvc+Mybatis)框架的商城小...

    xmljava系统源码-duo-doc:Duo-Doc,基于代码注释的无入侵文档工具。使用maven插件整合CI实现自动化接口文档生成。Saa

    本工程已经迁移,为了提供更好的服务,请移步新的仓库! 一、模块说明 本项目分为两部分: doclet插件和文档展示模块 doclet插件 doclet即是自动化文档模块,由三个模块组件: doclet-pojo:基类,主要是定义文档的...

    Javaweb期末设计项目-日记管理系统

    这份资源主题是Javaweb日记系统,采用的是maven工程,后端用到的技术有,实体层:Lombok注解开发;数据层:mybatis框架,虽然没有用到Spring和SpringMVC技术,但是后续可以改成SSM项目;前端主要采用vue+elementui...

    IDEA的安装和配置与使用详细介绍

    IntelliJIDEA的安装、配置与使用,主要包含...,八、创建 Java Web Project 或 Module ,九、关联数据库 ,十、版本控制(Version Control) ,十一、断点调试 ,十二、配置 Maven ,十三、其它设置 这些功能,让你对ieda操作熟练

    idea使用介绍

    文章目录idea创建普通java项目,设置字体编码、导入jar包idea的快捷键idea创建动态web工程(带有web.xml)idea中debug断点调试idea创建maven项目以及maven命令的使用idea中创建动态maven项目以及部署本地tomcat在...

    基于spring boot搭建的web基础框架.zip

    包含了web开发中常用的功能,如:缓存(redis)、日志、事务、JPA、shiro、安全、常用工具类、swagger2在线接口文档、跨域支持等,可以基于该项目快速进行公司内部的项目开发。 开发工具在软件开发生命周期中扮演...

    DataGear数据可视化分析平台

    1、将datagear以maven工程导入至IDE工具; 2、将datagear-webapp作为Web应用添加至servlet容器(比如Tomcat); 3、以调试模式运行Servlet容器。 调试注意: 在调试开发分支前(dev-*),建议先备份DataGear工作...

    java版商城源码下载-JT-progra:京淘项目

    选中jt-manage-web工程 Goals 填写 tomcat7:run Source页签: Add 加入工程 其他一般都用默认的,jre用自己的 ###1.京淘架构 学习方法: 思想,业务,表设计,代码 特点: 技术新 技术范围广,6个大点 分布式 高并发...

    java版商城源码下载-zhudong:项目

    选中jt-manage-web工程 Goals 填写 tomcat7:run Source页签: Add 加入工程 其他一般都用默认的,jre用自己的 ###1.京淘架构 学习方法: 思想,业务,表设计,代码 特点: 技术新 技术范围广,6个大点 分布式 高并发...

    MyDog是一个代码生成工具.zip

    目前实现了一键生成基于SpringBoot的web工程。项目特点是所有功能均基于插件开发。理论上可以无限扩展。 开发工具在软件开发生命周期中扮演着至关重要的角色,它们旨在简化和加速从概念设计到产品部署的各个环节。...

    一个基于SpringBoot的微服务脚手架+源代码+文档说明

    - 集成spring-boot-devtools,提高本机WEB调试时的应用重加载速度 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、...

Global site tag (gtag.js) - Google Analytics