maven 多工程搭建演示

maven出现后,很多公司会用maven来构建项目,单仅仅只是单项目单工程的

并没有使用多工程来构建,这样在以后,项目越来越大,业务越来越多以后,项目会难以维护,越发庞大,维护成本提高,团队士气也会下降

等等情况,使用maven构建多工程就是如今的趋势

这边演示一个maven工程相互依赖的例子,高手轻拍,大家互相学习,有不足之处请指出

1.新建demo-parent项目,作为父工程

选择quickstart

修改pom中的jar改为pom,这样的意思是当前工程为父工程,可以再其下创建子工程

2.新建demo-project-web,作为web工程,这个工程是总的web工程,下面将会包含另外2个子web工程

选择webapp作为web工程

3.同理创建demo-project-customer-web作为子web工程(webapp),这个工程是一个独立web工程,他包含了service,dao

4.同理创建demo-project-gods-web作为子web工程(webapp),这个工程将有一个demo-project-gods-core作为后台(core就是包含了service,dao)

5.创建demo-project-gods-core作为子工程(quickstart),依赖demo-project-gods-web

6.创建demo-common,作为子工程(quickstart),作用是工具包,可被其他工程依赖引用

3-6步骤略,生成项目如下图:

父工程pom会成这样:

1 <modules>
2       <module>demo-project-web</module>
3       <module>demo-project-gods-web</module>
4       <module>demo-project-customer-web</module>
5       <module>demo-project-gods-core</module>
6       <module>demo-common</module>
7   </modules>

好,那么现在来做工程之间的依赖

首先,demo-project-web作为顶级web项目,所有的子web项目打包后都会整合在此(如果同名文件则被顶级覆盖,如果顶级没有同名文件,但是子web有同名文件,则按照依赖顺序被优先依赖的同名文件覆盖)

pom如下:

 1 <?xml version="1.0"?>
 2 <project
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
 4     xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 5     <modelVersion>4.0.0</modelVersion>
 6
 7     <parent>
 8         <groupId>com.demo</groupId>
 9         <artifactId>demo-parent</artifactId>
10         <version>0.0.1-SNAPSHOT</version>
11     </parent>
12
13     <groupId>com.demo</groupId>
14     <artifactId>demo-project-web</artifactId>
15     <version>0.0.1-SNAPSHOT</version>
16     <packaging>war</packaging>
17     <name>demo-project-web Maven Webapp</name>
18     <url>http://maven.apache.org</url>
19
20     <dependencies>
21
22         <!-- 增加要合并的war包依赖 -->
23         <dependency>
24             <groupId>com.demo</groupId>
25             <artifactId>demo-project-gods-web</artifactId>
26             <version>0.0.1-SNAPSHOT</version>
27             <type>war</type>
28         </dependency>
29         <dependency>
30             <groupId>com.demo</groupId>
31             <artifactId>demo-project-customer-web</artifactId>
32             <version>0.0.1-SNAPSHOT</version>
33             <type>war</type>
34         </dependency>
35
36         <dependency>
37             <groupId>junit</groupId>
38             <artifactId>junit</artifactId>
39             <version>3.8.1</version>
40             <scope>test</scope>
41         </dependency>
42
43     </dependencies>
44
45     <build>
46
47         <finalName>demo-project-web</finalName>
48
49         <plugins>
50
51             <plugin>
52                 <groupId>org.apache.maven.plugins</groupId>
53                 <artifactId>maven-war-plugin</artifactId>
54                 <version>2.6</version>
55                 <configuration>
56                     <!-- 把另外2个web子工程加入进来, 合并war -->
57                     <overlays>
58                         <overlay>
59                             <groupId>com.demo</groupId>
60                             <artifactId>demo-project-gods-web</artifactId>
61                         </overlay>
62                         <overlay>
63                             <groupId>com.demo</groupId>
64                             <artifactId>demo-project-customer-web</artifactId>
65                         </overlay>
66                     </overlays>
67                 </configuration>
68             </plugin>
69
70         </plugins>
71     </build>
72
73 </project>

修改demo-project-gods-web的pom,添加自身依赖core作为service以及DAO

 1 <?xml version="1.0"?>
 2 <project
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
 4     xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 5     <modelVersion>4.0.0</modelVersion>
 6     <parent>
 7         <groupId>com.demo</groupId>
 8         <artifactId>demo-parent</artifactId>
 9         <version>0.0.1-SNAPSHOT</version>
10     </parent>
11     <groupId>com.demo</groupId>
12     <artifactId>demo-project-gods-web</artifactId>
13     <version>0.0.1-SNAPSHOT</version>
14     <packaging>war</packaging>
15     <name>demo-project-gods-web Maven Webapp</name>
16     <url>http://maven.apache.org</url>
17
18     <dependencies>
19
20         <!-- 引入依赖, core中包含service以及DAO -->
21         <dependency>
22             <groupId>com.demo</groupId>
23             <artifactId>demo-project-gods-core</artifactId>
24             <version>0.0.1-SNAPSHOT</version>
25         </dependency>
26
27         <dependency>
28             <groupId>junit</groupId>
29             <artifactId>junit</artifactId>
30             <version>3.8.1</version>
31             <scope>test</scope>
32         </dependency>
33
34     </dependencies>
35
36     <build>
37         <finalName>demo-project-gods-web</finalName>
38     </build>
39 </project>

在customer中添加工具类依赖

 1 <?xml version="1.0"?>
 2 <project
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
 4     xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 5     <modelVersion>4.0.0</modelVersion>
 6     <parent>
 7         <groupId>com.demo</groupId>
 8         <artifactId>demo-parent</artifactId>
 9         <version>0.0.1-SNAPSHOT</version>
10     </parent>
11     <groupId>com.demo</groupId>
12     <artifactId>demo-project-customer-web</artifactId>
13     <version>0.0.1-SNAPSHOT</version>
14     <packaging>war</packaging>
15     <name>demo-project-customer-web Maven Webapp</name>
16     <url>http://maven.apache.org</url>
17     <dependencies>
18
19         <!-- 添加common工具类依赖 -->
20         <dependency>
21             <groupId>com.demo</groupId>
22             <artifactId>demo-common</artifactId>
23             <version>0.0.1-SNAPSHOT</version>
24         </dependency>
25
26         <dependency>
27             <groupId>junit</groupId>
28             <artifactId>junit</artifactId>
29             <version>3.8.1</version>
30             <scope>test</scope>
31         </dependency>
32
33     </dependencies>
34     <build>
35         <finalName>demo-project-customer-web</finalName>
36     </build>
37 </project>

============进入代码阶段============

parent是父工程,不需要编写代码

demo-common:

 1 package org.demo.common;
 2
 3 import java.util.Date;
 4
 5 public class DateUtil {
 6
 7     public static void showTime(String name) {
 8         System.out.println("Run in demo-common - Hello ~ " + name + ", it is " + new Date().toString());
 9     }
10
11 }

demo-project-customer-web:

 1 package com.demo.project.customer.web;
 2
 3 import org.demo.common.DateUtil;
 4
 5 public class AbcService {
 6
 7     public static void getDateService(String name) {
 8         DateUtil.showTime(name);
 9         System.out.println("Run in demo-project-customer-web...");
10     }
11
12 }

customer.jsp

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <%@page import="com.demo.project.customer.web.AbcService"%>
 3 <%@ page language="java" contentType="text/html; charset=UTF-8"
 4     pageEncoding="UTF-8"%>
 5 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 6 <html xmlns="http://www.w3.org/1999/xhtml"
 7     xmlns:f="http://java.sun.com/jsf/core"
 8     xmlns:h="http://java.sun.com/jsf/html">
 9 <head>
10 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
11 <title>Insert title here</title>
12 </head>
13 <body>
14     <%
15         System.out.print("hello demo-project-customer-web customer.jsp");
16         AbcService.getDateService("abc");
17     %>
18
19 </body>
20 </html>

demo-project-gods-core:

 1 package org.demo.project.gods.core;
 2
 3
 4 public class Gods {
 5
 6     public static void getDateService(String name) {
 7         System.out.println("Run in demo-project-gods-core...");
 8     }
 9
10 }

demo-project-gods-web

index.jsp

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <%@page import="org.demo.project.gods.core.Gods"%>
 3 <%@ page language="java" contentType="text/html; charset=UTF-8"
 4     pageEncoding="UTF-8"%>
 5 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 6 <html xmlns="http://www.w3.org/1999/xhtml"
 7     xmlns:f="http://java.sun.com/jsf/core"
 8     xmlns:h="http://java.sun.com/jsf/html">
 9 <head>
10 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
11 <title>Insert title here</title>
12 </head>
13 <body>
14
15     <%
16         System.out.print("hello demo-project-gods-web gods.jsp");
17         Gods.getDateService("nathan");
18
19     %>
20 </body>
21 </html>

run - mvn install:

运行成功,进入相应的页面则成功

时间: 2024-10-07 04:50:28

maven 多工程搭建演示的相关文章

01淘淘商城项目:项目Maven工程搭建

最近在学习淘淘商城项目的搭建,使用maven做管理 后台管理系统工程搭建: 使用maven的好处: 1.依赖管理.jar包.工程之间依赖 2.项目构建:实现项目的一步构建 3.工程聚合.继承.依赖 maven工程分为三种类型: pom工程:用在父级工程,聚合工程中 war包工程:主要用作网站 jar包工程:就是当作jar使用的,可以用来打包 先给出总的项目结构,然后再解释是如何实现这些结构的 解释如下: 1.taotao-parent taotao-parent公司级别的maven工程.主要功能

单工程搭建springmvc+spring+mybatis(maven,idea)

单工程搭建springmvc+spring+mybatis(maven,idea) 1.pom.xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven

maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目

项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 1.1创建聚合工程的父模块 1.2设置父模块的POM文件 主要是配置 spring boot版本,spring cloud 版本,和一些通用的依赖 比如这里的 lombok依赖 <?xml version="1.0" encoding="UTF-8"?>

Java工程搭建最佳方案之Maven

前言 从头开始一个项目.第一步是划分系统模块. Maven是Java世界中最流行的项目管理工具.它提供继承和聚合功能,因此可以将项目划分为多个模块.它非常符合微服务的思想,是实现微服务工程的良好工具.从头开始一个项目.第一步是划分系统模块. Maven是Java世界中最流行的项目管理工具.它提供继承和聚合功能,因此可以将项目划分为多个模块.它非常符合微服务的思想,是实现微服务工程的良好工具. 微服务和Maven聚合模块的区别 Microservice是一个可以独立部署的项目,Maven的聚合功能

淘淘商城系列——使用maven构建工程

开发工具和环境 这里,我统一规范一下淘淘商城的开发工具和环境,如下: Eclipse 4.5.2(Mars2),其自带maven插件,需要手工安装svn插件,但我提供的这个eclipse,svn插件已经搭好了 Maven-3.3.9(开发工具自带) Tomcat-7.0.75(Maven Tomcat Plugin) JDK 1.7 MySQL 5.7.17 Nginx 1.8.0 Redis 3.0.0 Win10 操作系统 SVN(版本管理工具) 工程搭建 使用maven的好处 项目构建.M

Maven+STS工程中Maven Dependencies 文件夹丢失问题

在我们使用Maven+sts工程中偶尔会出现这种情况: Maven Dependencies文件夹在新打开的工程中丢失,造成 web project 自动编译出错,缺少必要的库文件: 如下图所示的情况: 说明:这种情况往往出现在开发环境重新搭建以后,Maven的依赖库不在是原来的路径下,这时候会出现这种问题. 网上常见的解决方法是: 右键项目--maven---Disable Maven Nature 如下图: 之后 重新转换成 Maven项目 :项目右键--configure--convert

TestNG+Maven+IDEA环境搭建

TestNG+Maven+IDEA环境搭建 TestNG+Maven+IDEA环境搭建 前言: 主要进行TestNG测试环境的搭建 所需环境: 1.IDEA UItimate 2.JDK 3.Maven 一.创建工程 File –>new –>Project–>next–>finish 上面两项名称自己定义 最后工程目录  二.导入相关依赖包和插件 1)添加testng依赖包 在pom.xml文件添加 <dependencies> <dependency>

如何使用jenkins部署maven父子工程

最近使用jenkins自动部署项目时遇到一个问题,如果部署单个的maven工程,没有什么问题, 但是在部署maven创建的父子工程,如果只从svn或者git上拉取子工程源码时,会报找不到父 工程pom或者relativePath的错误,这是因为,maven子工程是依赖父工程的pom的,所以拉取 代码的时候要先拉取整个父工程下来,然后再单个拉取子工程,也就是父工程创建一个任务, 然后子工程各一个任务.操作方式如下: 说明:我使用的jenkins是root权限 首先登陆jenkins到达jenkin

Maven聚合工程安装时排除掉不参与本次安装的子工程

为解决本人在练习项目时的实际需求而做此记录: 在练习SSM项目时,通过Maven的聚合工程搭建了几个module,通过 health_parent 父工程进行管理,内有 healthmobile_web 客户移动端系统, health_web 后台管理系统, springsecuritydemo spring安全框架demo等子工程. 存在问题: 在完成后台管理系统的功能编写后,测试时如果仅需要启动后台系统项目及dubbo服务 health_service ,而通过父工程进行 clean ins