Maven学习总结(一)----解决使用Maven搭建的SSH框架下的用Tomcat断点调试项目

一、日期:


内容:解决使用Maven搭建的SSH框架下的用Tomcat断点调试项目


一、项目介绍和pom内容分析:

1、项目介绍

最近个人在学习SSH框架的内容,然后在一个偶然的机会了解到使用Maven部署项目的话会给开发带来前所未有的遍历,因此在个人折腾一番之后基本上了解了 Maven的基本使用规则和如何从基本出发部署一个JavaWeb项目。我个人搭建的这个框架完全只是为了个人学习框架使用。


2、pom介绍:

在搭建框架的当初,仅仅是为了让项目在使用Maven搭建的倩况下赶快跑起来,但是在一个偶然的机会需要断点调试的时候却始终都跑不到debug里去。以下是我的 pom的内容:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>o_OnlyOne_o</groupId>
  <artifactId>O_OnlyOne_O</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <!-- 添加项目依赖包的版本号描述 -->
  <properties>
  	<!-- 添加单元测试包 -->
  	<junit.version>4.10</junit.version>
  	
  	<!-- 添加spring3.2.8依赖包的版本描述 -->
  	<spring.version>3.2.8.RELEASE</spring.version>
  
  	<!-- 添加Hibernate4.3.8依赖jar包 -->
  	<hibernate.version>4.2.8.Final</hibernate.version>
  
  	<!-- 添加sevlet版本 -->
  	<servlet.version>3.1.0</servlet.version>
  	
  	<!-- jetty的版本 -->
  	<jetty.version>9.3.6.v20151106</jetty.version>
  
  	<!-- struts版本 -->
  	<struts.version>2.3.24</struts.version>
  
  	<!-- 添加ognl依赖jar包的版本 -->
  	<ognl.version>3.0.6</ognl.version>
  	
  	<!-- tomcat的版本 -->
  	<tomcat.version>2.2</tomcat.version>
  	
  	<!-- mysql驱动包的版本 -->
  	<mysql.version>5.1.38</mysql.version>
  	
  	<!-- 假如log4j.jar2.2版本 -->
  	<log4j.version>1.2.17</log4j.version>
  	
  	<!-- ****************************数据库连接池的jar包版本**************************** -->
  	<!-- 其中数据库连接池有: C3P0,Druid,DBCP等,在这里使用 Druid-->
  	<druid.version>1.0.18</druid.version>
  	<!-- ****************************数据库连接池的jar包版本**************************** -->
  	
  	<!-- 使用Spring的aop时需要使用到aspectjweaver包,所以需要添加aspectjweaver包 -->
  	<aspectjweaver.version>1.8.9</aspectjweaver.version>
  	
  	<!-- 添加JSTL版本 -->
  	<jstl.version>1.2</jstl.version>
  </properties>
  
  <dependencies>
  	<!-- 添加使用JSTL标签支持 -->
  	<dependency>
	    <groupId>jstl</groupId>
	    <artifactId>jstl</artifactId>
	    <version>${jstl.version}</version>
	</dependency>
	<!-- 添加单元测试包 -->
	<dependency>
	    <groupId>junit</groupId>
	    <artifactId>junit</artifactId>
	    <version>${junit.version}</version>
	    <scope>test</scope>
	</dependency>
	
	<!-- 添加spring的依赖jar包 -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-core</artifactId>
	    <version>${spring.version}</version>
	</dependency>
	<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>
    
    <!-- 添加Java servlet -->
	<dependency>
	    <groupId>javax.servlet</groupId>
	    <artifactId>javax.servlet-api</artifactId>
	    <version>${servlet.version}</version>
	    <!-- 设置在编译时运行 -->
	    <scope>provided</scope>
	</dependency>
	
	<!-- 添加struts2依赖jar包 -->
	<dependency>
	    <groupId>org.apache.struts</groupId>
	    <artifactId>struts2-core</artifactId>
	    <version>${struts.version}</version>
	    <!--
	            这里的 exclusions 是排除包,因为 Struts2中有javassist,Hibernate中也有javassist,
	            所以如果要整合Hibernate,一定要排除掉Struts2中的javassist,否则就冲突了。
	            <exclusions>
	                <exclusion>
	                    <groupId>javassist</groupId>
	                    <artifactId>javassist</artifactId>
	                </exclusion>
	            </exclusions> 
	     -->
	</dependency>
	
	<!-- struts2和Spring整合时需要使用到的插件 -->
	<dependency>
	    <groupId>org.apache.struts</groupId>
	    <artifactId>struts2-spring-plugin</artifactId>
	    <version>${struts.version}</version>
	</dependency>
	
	<!-- 使用了这个插件之后,就可以采用注解的方式配置Struts的Action,免去了在struts.xml中的繁琐配置项 -->
	<dependency>
	    <groupId>org.apache.struts</groupId>
	    <artifactId>struts2-convention-plugin</artifactId>
	    <version>${struts.version}</version>
	</dependency>
	
	<!-- config-browser-plugin插件不是必须的,但是使用了这个插件之后,就可以很方便的浏览项目中的所有action及其与 jsp view的映射 -->
	<dependency>
	    <groupId>org.apache.struts</groupId>
	    <artifactId>struts2-config-browser-plugin</artifactId>
	    <version>${struts.version}</version>
	</dependency>
	<!-- 添加ognl依赖jar包 -->
	<dependency>
	    <groupId>ognl</groupId>
	    <artifactId>ognl</artifactId>
	    <version>${ognl.version}</version>
	</dependency>
	<!-- 添加Hibernate依赖包 -->
	<dependency>
	    <groupId>org.hibernate</groupId>
	    <artifactId>hibernate-core</artifactId>
	    <version>${hibernate.version}</version>
	</dependency>
	
	<!-- 添加mysql依赖jar包 -->
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>${mysql.version}</version>
	</dependency>
	
	<!-- ****************************数据库连接池的jar包**************************** -->
	<dependency>
	    <groupId>com.alibaba</groupId>
	    <artifactId>druid</artifactId>
	    <version>${druid.version}</version>
	</dependency>
	<!-- ****************************数据库连接池的jar包**************************** -->
	
	<dependency>
	    <groupId>org.aspectj</groupId>
	    <artifactId>aspectjweaver</artifactId>
	    <version>${aspectjweaver.version}</version>
	</dependency>
    
    <!-- 
    <dependency>
	    <groupId>log4j</groupId>
	    <artifactId>log4j</artifactId>
	    <version>${log4j.version}</version>
	</dependency>
	 -->
  </dependencies>
  <span style="color:#ff0000;"><build>
  	<finalName>onlyOne</finalName>
  	<plugins>
  		<plugin>
  			<!-- 使用tomcat作为web容器,将jetty注释掉
	 		<groupId>org.eclipse.jetty</groupId>
		    <artifactId>jetty-maven-plugin</artifactId>
		    <version>${jetty.version}</version>
		     -->
		    
		    <groupId>org.apache.tomcat.maven</groupId>
	        <artifactId>tomcat7-maven-plugin</artifactId>
	        <version>${tomcat.version}</version>
		 
		    <executions>
		    	<execution>
		    		<!-- 设置在打包的阶段 -->
		    		<phase>package</phase>
		    		<goals>
		    			<goal>
		    				run
		    			</goal>
		    		</goals>
		    	</execution>
		    </executions>
  		</plugin>
  	</plugins>
  </build></span>
</project>
代码中标注红色的部分表示使用的服务器插件是Tomca7t的 tomcat7-maven-plugin插件,当然也可以使用jetty作为自己的Web容器。在启动运行项目使用的命令属于 Maven命令,而且在打包阶段就可以直接运行项目。

这就是表示在项目打包的时候就直接启动并运行项目。但是这样启动项目的方式时不可以进入DEBUG的,可能这样的启动方式没有直接将项目直接部署到Tomcat容器 中去,今天在这里就彻底的解决这个困扰已久的问题。

二、解决不能断点调试的问题:

1、修改Pom.xml配置文件添加Tomcat7插件:

  		<plugin>
  		   <!-- 导入Tomcat7插件 -->
           <groupId>org.apache.tomcat.maven</groupId>
           <artifactId>tomcat7-maven-plugin</artifactId>
           <version>${tomcat.version}</version>
           <configuration>
               <port>8080</port><!-- 服务器端口号,默认是8080 -->
               <path>/O_OnlyOne_O</path><!-- 访问应用的路径 -->
               <uriEncoding>UTF-8</uriEncoding><!-- 项目编码方式 -->
               <finalName>O_OnlyOne_O</finalName><!-- 项目名字 -->
               <url>http://localhost:8080/O_OnlyOne_O/</url>
               <server>tomcat7</server><!-- 服务器的名字 -->
           </configuration>
        </plugin>
将如上的红色部分注释掉然后添加这部分代码。


2、打开调试窗口:

新建一个"Maven Build"

如上操作就基本配置好了调试的准备工作:

2、在需要调试的source中添加断点:


3、启动服务器:


4、访问加断点Action所对应的画面

5、debug进入加断点的地方:

提示:找不到source,这个已经不是什么问题了,只需要手动添加source就搞定了。

OMG!确实进去了。


三、总结:

这个问题困扰已久了,只是很多时候没有用到debug,所以就把它搁置了,今天正好有时间所以将其解决。其实,很多事情只要用心就没什么困难不可以解决。




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值