使用maven管理多模块项目并启动调试

实验工程代码: https://download.youkuaiyun.com/download/u010476739/10962926
实验目的:
使用maven管理多个模块项目,包含多个jar类型工程、一个war类型工程,并启动调试

1. 项目结构

test-parent(pom)
	-- pom.xml
	test-util(jar)
		-- pom
	test-server(pom)
		-- pom
		test-server-internal(jar)
			--pom
	test-web(war)
		-- pom.xml

2. 项目说明

这是一个web项目,多jar包组件,test-web为标准web工程。
这些jar包、war包工程都被test-parent工程管理
test-server-internal又被test-server工程管理
test-web引用test-util项目
test-web引用test-server-internal项目
使用tomcat7-maven-plugin进行调试

3. 目录结构和pom文件信息

目录结构

└─test-parent
	├─pom.xml
    ├─test-server
    │  └─pom.xml
    │  └─test-server-internal
    │	   └─pom.xml
    │      └─src
    │          └─main
    │              └─java
    ├─test-util
    │  └─pom.xml
    │  └─src
    │      └─main
    │          └─java
    └─test-web
	    └─pom.xml
        └─src
            └─main
                ├─java
                └─webapp
                    └─WEB-INF
                        └─web.xml

test-parent > pom.xml

<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>org.jack</groupId>
	<artifactId>test-parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>

	<name>test-parent</name>
	<url>http://maven.apache.org</url>
	<modules>
		<module>test-server</module>
		<module>test-util</module>
		<module>test-web</module>
	</modules>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>2.1</version>
				<configuration>
					<port>8081</port>
					<uriEncoding>UTF-8</uriEncoding>
					<path>/</path>
					<contextReloadable>true</contextReloadable>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

test-util > pom.xml

<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>

	<parent>
		<groupId>org.jack</groupId>
		<artifactId>test-parent</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>test-util</artifactId>
	<packaging>jar</packaging>
</project>

test-server > pom.xml

<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>

	<parent>
		<groupId>org.jack</groupId>
		<artifactId>test-parent</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>test-server</artifactId>
	<packaging>pom</packaging>
	<modules>
		<module>test-server-internal</module>
	</modules>
</project>

test-server-internal > 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>

	<parent>
		<groupId>org.jack</groupId>
		<artifactId>test-server</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>test-server-internal</artifactId>
	<packaging>jar</packaging>
</project>

test-web > 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>

	<parent>
		<groupId>org.jack</groupId>
		<artifactId>test-parent</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>test-web</artifactId>
	<packaging>war</packaging>

	<dependencies>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>4.0.1</version>
			<scope>provided</scope>
		</dependency>
		
		<dependency>
			<groupId>org.jack</groupId>
			<artifactId>test-util</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
		
		<dependency>
			<groupId>org.jack</groupId>
			<artifactId>test-server-internal</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
	</dependencies>
</project>

4. 将test-parent导入到eclipse中

在这里插入图片描述
在这里插入图片描述
导入后的目录结构为:
在这里插入图片描述

5.编写代码

5.1 test-util中新建类:StringUtil.java

package org.jack.util;

public class StringUtil {
	public static String show(String name) {
		return name + ",hello!";
	}
}

5.2 test-server-internal中新建类:Demo.java

package org.jack.internal;

public class Demo {
	public static String show() {
		return "this is org.jack.internal.Demo.show";
	}
}

5.3 test-web编写

5.3.1 新建类:DemoServlet.java
package org.jack.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jack.internal.Demo;
import org.jack.util.StringUtil;

public class DemoServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String name = req.getParameter("name");
		String res = StringUtil.show(name);
		resp.getWriter().write(res);
		resp.getWriter().write("\r\n");
		resp.getWriter().write(Demo.show());
		resp.getWriter().write("\r\nok");
		resp.getWriter().flush();
	}

}
5.3.2 新建index.html

在这里插入图片描述
index.html

<html>
<head>
<title>test-web index.html</title>
</head>
<body>
	this is test-web index.html
</body>
</html>
5.3.3 修改web.xml,配置servlet映射
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<servlet>
		<servlet-name>demo</servlet-name>
		<servlet-class>org.jack.servlet.DemoServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>demo</servlet-name>
		<url-pattern>/demo</url-pattern>
	</servlet-mapping>
</web-app>

6. 调试运行

在test-parent上右键->Debug As->Debug Configurations…
在这里插入图片描述
开启后控制台输出:
在这里插入图片描述
在浏览器中输入http://localhost:8081/
在这里插入图片描述
在浏览器中输入http://localhost:8081/demo?name=kolp
在这里插入图片描述
至此,实现了maven管理多项目并启动调试。
另外: 这个工程在test-parent里面配置了<contextReloadable>true</contextReloadable>,所以在调试中修改后台代码也是可以的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackletter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值