添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
逃跑的骆驼  ·  Java 8 Stream | 菜鸟教程·  1 年前    · 
贪玩的灌汤包  ·  ElementUI ...·  1 年前    · 
时尚的熊猫  ·  java按行拆分字符串 ...·  1 年前    · 

实验工程代码: https://download.csdn.net/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

<title>test-web index.html</title> </head> 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>,所以在调试中修改后台代码也是可以的。

在实际的工作当中,我们项目开发为了更好的管理项目,通常分为多模块,如启动模块(用于启动项目)、业务模块(实际业务编写都在这里进行)、公共模块(系统相关的配置、工具等)等,具体根据自己项目来分多个模块。 多模块管理使项目可以按照功能或者逻辑划分成多个独立的模块。每个模块可以专注于解决特定的问题或实现特定的功能,提高了代码的可维护性和可重用性。Maven可以在多模块项目中自动管理依赖关系。每个模块可以定义自己的依赖项,并且 Maven 会自动处理这些依赖项的下载和版本管理。这简化了项目配置和维护的过程,减少了依赖管理带来的问题。多模块管理使得每个模块都可以独立地进行版本控制。这意味着不同的模块可以在不同的时间点进行独立的发布和更新,而不会影响到其他模块的开发和部署。 目录1.创建 Maven 工程1 ) 选择 Maven ,点击“Next ”下一步2 ) 设置项目坐标 设置项目坐标 ,点击“Next3 ) 设置项目名称和项目存放位置 ,点击“Finish ”4 ) 配置导入设置2. 将 maven 工程修改为父工程1 ) 设置 packaging 标签的内容2 ) 删除 src 目录 3. 父工程添加编译插件 4.创建子模块1)选择 New Module2)选择 maven 项目 3)设置子模块坐标4)设置模块名称及存放位置 5. 项目视图6.添加依赖1)添加 如果没有指定,就会默认使用该依赖范围。使用此依赖范围的Maven依赖, 对于编译,测试,运行都有效。使用此依赖范围的Maven依赖,对于编译和测试有效, 但在运行时无效。使用此依赖范围的Maven依赖,对于测试和运行有效, 但在编译代码时无效。Maven会解析各个直接依赖的POM,将那些必要的间接依赖,以传递性依赖的形式引入到当前项目中。1. groupId, artifactId, version : 依赖的基本坐标, 对于任何一个依赖来说,基本坐标是最重要的, Maven根据坐标才能找到需要的依赖。 最近在做一个很复杂的会员综合线下线上商城大型项目,单模块项目无法满足多人开发和架构,很多模块都是重复的就想到了把模块提出来,做成公共模块,基于 maven 的多模块项目,也好分工开发,也便于后期微服务重构我刚开始创建项目的时候是基于单模块,开发的,我先开发的接口 api 项目结构是这样的模块是公共模块,mallapi 是小程序,随然单体项目这样的结构也还清晰,但是后面我想到,还有后台,又要重新创建一个项目,core 模块,数据库连接l 模块这些都是通用的,又是需要在后台项目复制一遍,我觉得很不爽,不友好,代 我们在日常开发过程中,在新建一个项目中,我们经常会将一个项目按照功能性、模块等将一个项目分成多个子项目,这些子项目都包含在主项目中。 对于Spring、SpringBoot中实现多模块化,网上有很多教程,这里就不在讲述了。 本次主要讲的是如何在一个项目中能够有两个Application,即有两个启动启动不同的启动,能够访问不同的功能,另外我们开发项目时,需要将配置分为开发环境、测试环境、生产... maven项目启动 在多项目maven项目里,你可以通过配置.idea/workspace.xml来配置多项目同时启动,这样方便于你的调试,不需要一个一个启动了 workspace.xml文件里添加 <component name="RunDashboard"> <option name="configurationTypes"> <option value="SpringBootApplicationConfiguratio