实验工程代码: 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>
,所以在调试中修改后台代码也是可以的。