`
skzr.org
  • 浏览: 365415 次
  • 性别: 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工程了。

相关推荐

    Maven Web基础搭建示例

    ** Maven Web基础搭建详解 ** Maven是一款强大的项目管理和依赖管理工具,广泛应用于Java开发领域。在构建Web项目时,Maven能够自动化处理构建过程,包括编译、测试、打包、部署等步骤,极大地提高了开发效率。本...

    创建maven动态web工程demo

    当我们需要创建一个动态Web工程时,结合Maven和Eclipse可以简化项目配置,提高开发效率。下面我们将详细探讨如何使用这两个工具来创建一个名为“APIDemo”的动态Web工程,并实现一个简单的"Hello, World!"小程序。 ...

    idea创建基于maven的web工程共6页.pdf.zi

    【标题】"idea创建基于maven的web工程共6页.pdf.zip" 提示我们这个压缩文件包含了一份关于在IntelliJ IDEA(简称Idea)中使用Maven构建Web项目的教程,共有六页内容。Maven是Java开发中广泛使用的项目管理和依赖管理...

    idea创建基于maven的web工程共6页.pdf.zip

    【标题】"idea创建基于maven的web工程共6页.pdf.zip" 提供的信息表明,这是一个关于使用IntelliJ IDEA(简称Idea)创建基于Maven的Web项目的教程文档,内容可能涵盖了6个主要步骤或章节。Maven是Java开发中的一个...

    maven +jetty 配置web工程

    本篇文章将详细探讨如何利用Maven与Jetty进行配置,以便高效地开发和运行Web工程。 首先,`Maven`是Apache软件基金会开发的项目管理工具,它通过一个统一的构建过程和依赖管理,简化了Java项目的构建、测试和部署。...

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

    本文将详细介绍如何在MyEclipse中配置Maven,以便进行Web工程的开发。 首先,我们需要在命令行环境中使用Maven创建一个基础的Web应用项目。通过执行以下命令: ```bash mvn archetype:generate -...

    Maven创建Java工程

    为了在Eclipse中开发和调试这些模块,需要为每个模块生成Eclipse工程文件。这可以通过在各模块目录下运行`mvn eclipse:eclipse`命令实现。对于`mydemo-web`,由于是web项目,还需额外指定`-Dwtpversion=1.0`参数,...

    如何基于maven在eclipse下创建web工程

    ### 如何基于Maven在Eclipse下创建Web工程 #### Maven与Eclipse简介 Maven是Apache软件基金会的一个开源项目,它是一个项目管理和综合工具,主要用于Java项目的构建、依赖管理和项目信息管理。通过Maven,开发者...

    IDEA下maven新建servlet3.x/web3.x工程模版

    【标题】"IDEA下maven新建servlet3.x/web3.x工程模版"涉及到的主要知识点是使用IntelliJ IDEA(IDEA)结合Maven构建一个支持Servlet 3.x和Web 3.x标准的Java Web项目。Maven是一个强大的项目管理工具,能够帮助...

    用Maven和Jetty开发调试WEB应用程序

    ### 使用Maven和Jetty开发调试WEB应用程序 #### 前言 在现代软件开发过程中,集成工具如Maven和Jetty极大地提高了开发效率。Maven作为自动化构建工具,能够帮助开发者快速创建、管理和构建项目;而Jetty则是一款轻...

    javaMaven工程.zip

    【标题】"javaMaven工程.zip" 是一个包含Java编程语言和Maven构建工具的项目压缩包,专门用于实现网络爬虫功能,旨在爬取ZOL(中关村在线)网站的首页壁纸。 【描述】该工程的目标是通过编写Java代码,利用Maven...

    maven工程小例子

    【标题】"maven工程小例子"涉及到的是Java开发中的构建工具Maven的应用。Maven是一个项目管理和综合工具,它简化了构建、依赖管理和项目的生命周期。在Java开发中,Maven通过XML格式的配置文件(pom.xml)来管理项目...

    基于idea把maven工程转换为web项目

    基于IDEA把Maven工程转换为Web项目 本文主要介绍了如何使用IDEA将Maven工程转换为Web项目,详细介绍了转换过程中的每一步操作,并提供了示例代码,对读者的学习和工作具有重要的参考价值。 知识点1:Maven工程的...

    springmvc maven工程

    总结,"springmvc maven工程"是基于Maven构建的SpringMVC项目,利用了Maven的依赖管理和构建功能,结合SpringMVC的灵活性,提供了一种高效开发Java Web应用的方式。通过理解并掌握SpringMVC和Maven的核心概念与实践...

    idea+springboot+maven工程创建.docx

    在本文中,我们将深入探讨如何使用IntelliJ IDEA(版本2017.12)创建一个基于Spring Boot和Maven的Java工程,并配置MyBatis作为持久层框架。Spring Boot简化了Java应用的开发过程,而Maven是管理项目构建、依赖关系...

Global site tag (gtag.js) - Google Analytics