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会成这样:
<modules>
<module>demo-project-web</module>
<module>demo-project-gods-web</module>
<module>demo-project-customer-web</module>
<module>demo-project-gods-core</module>
<module>demo-common</module>
</modules>
好,那么现在来做工程之间的依赖
首先,demo-project-web作为顶级web项目,所有的子web项目打包后都会整合在此(如果同名文件则被顶级覆盖,如果顶级没有同名文件,但是子web有同名文件,则按照依赖顺序被优先依赖的同名文件覆盖)
pom如下:
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion> <parent>
<groupId>com.demo</groupId>
<artifactId>demo-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent> <groupId>com.demo</groupId>
<artifactId>demo-project-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>demo-project-web Maven Webapp</name>
<url>http://maven.apache.org</url> <dependencies> <!-- 增加要合并的war包依赖 -->
<dependency>
<groupId>com.demo</groupId>
<artifactId>demo-project-gods-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>war</type>
</dependency>
<dependency>
<groupId>com.demo</groupId>
<artifactId>demo-project-customer-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>war</type>
</dependency> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency> </dependencies> <build> <finalName>demo-project-web</finalName> <plugins> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<!-- 把另外2个web子工程加入进来, 合并war -->
<overlays>
<overlay>
<groupId>com.demo</groupId>
<artifactId>demo-project-gods-web</artifactId>
</overlay>
<overlay>
<groupId>com.demo</groupId>
<artifactId>demo-project-customer-web</artifactId>
</overlay>
</overlays>
</configuration>
</plugin> </plugins>
</build> </project>
修改demo-project-gods-web的pom,添加自身依赖core作为service以及DAO
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.demo</groupId>
<artifactId>demo-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.demo</groupId>
<artifactId>demo-project-gods-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>demo-project-gods-web Maven Webapp</name>
<url>http://maven.apache.org</url> <dependencies> <!-- 引入依赖, core中包含service以及DAO -->
<dependency>
<groupId>com.demo</groupId>
<artifactId>demo-project-gods-core</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency> </dependencies> <build>
<finalName>demo-project-gods-web</finalName>
</build>
</project>
在customer中添加工具类依赖
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.demo</groupId>
<artifactId>demo-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.demo</groupId>
<artifactId>demo-project-customer-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>demo-project-customer-web Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies> <!-- 添加common工具类依赖 -->
<dependency>
<groupId>com.demo</groupId>
<artifactId>demo-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency> </dependencies>
<build>
<finalName>demo-project-customer-web</finalName>
</build>
</project>
============进入代码阶段============
parent是父工程,不需要编写代码
demo-common:
package org.demo.common; import java.util.Date; public class DateUtil { public static void showTime(String name) {
System.out.println("Run in demo-common - Hello ~ " + name + ", it is " + new Date().toString());
} }
demo-project-customer-web:
package com.demo.project.customer.web; import org.demo.common.DateUtil; public class AbcService { public static void getDateService(String name) {
DateUtil.showTime(name);
System.out.println("Run in demo-project-customer-web...");
} }
customer.jsp
<?xml version="1.0" encoding="UTF-8" ?>
<%@page import="com.demo.project.customer.web.AbcService"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
<%
System.out.print("hello demo-project-customer-web customer.jsp");
AbcService.getDateService("abc");
%> </body>
</html>
demo-project-gods-core:
package org.demo.project.gods.core; public class Gods { public static void getDateService(String name) {
System.out.println("Run in demo-project-gods-core...");
} }
demo-project-gods-web
index.jsp
<?xml version="1.0" encoding="UTF-8" ?>
<%@page import="org.demo.project.gods.core.Gods"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body> <%
System.out.print("hello demo-project-gods-web gods.jsp");
Gods.getDateService("nathan"); %>
</body>
</html>
run - mvn install:
运行成功,进入相应的页面则成功
maven 多工程搭建演示的更多相关文章
- ecplise maven springmvc工程搭建
转载自:https://www.cnblogs.com/crazybirds/p/4643497.html 内网上网代理配置: 第一步:新建maven项目,选择Maven Project,如图1. ...
- 001淘淘商城项目:项目的Maven工程搭建
开始一个新的项目,特此记录,资料全部来源于传智播客,感谢. 我们要做一个类似电商的项目.用maven做管理. maven里面主要分为三种工程: 1:pom工程:用在父级工程,聚合工程中 2:war工程 ...
- maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目
项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 ...
- 单工程搭建springmvc+spring+mybatis(maven,idea)
单工程搭建springmvc+spring+mybatis(maven,idea) 1.pom.xml <properties> <project.build.sourceEncod ...
- 【曹工杂谈】Maven源码调试工程搭建
Maven源码调试工程搭建 思路 我们前面的文章<[曹工杂谈]Maven和Tomcat能有啥联系呢,都穿打补丁的衣服吗>分析了Maven大体的执行阶段,主要包括三个阶段: 启动类阶段,负责 ...
- maven工程运行演示
通过maven提供的命令来运行maven工程,体会maven构建工程的优点. (1)运行web工程 进入maven工程目录(当前目录有pom.xml),运行tomcat:run命令 可能出现的问 ...
- (转)淘淘商城系列——使用maven构建工程
http://blog.csdn.net/yerenyuan_pku/article/details/72669269 开发工具和环境 这里,我统一规范一下淘淘商城的开发工具和环境,如下: Eclip ...
- Maven+STS工程中Maven Dependencies 文件夹丢失问题
在我们使用Maven+sts工程中偶尔会出现这种情况: Maven Dependencies文件夹在新打开的工程中丢失,造成 web project 自动编译出错,缺少必要的库文件: 如下图所示的情况 ...
- 某马-某淘商城的day01--->分析,工程搭建,tomcat插件启动工程,svn,反思
-1:为什么还要写某马的某淘商城呢? 答:万物更新,季节交替.新人总把旧人换.所以呢,前人写了N多遍的东西,我们依旧在学,所以下决心写某马的某淘商城.(也因为在学校还没找工作,所以找个相对长期的事情做 ...
随机推荐
- PhpStorm的open in browser怎么修改端口和相对路径
昨天下班后,在电脑安装phpstorm.xampp安装正常,但是在phpstorm上直接打开网站文件一直报错,一直报错502.我感觉好奇快,怎么会报错呢.后面我用hbuild打开文件,在浏览器显示正常 ...
- 身份证校验(c++实现)
描述: 我国国标[GB 11643-1999]中规定:公民身份号码是18位特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码 ...
- VisualStudio中解决方案
在VS中创建一个项目通常会生成一个解决方案文件(.sln)和一个隐藏的解决方案用户选项文件(.suo). 解决方案文件是一个文本文件,包含以下信息: 将被加载的所有项目以构成完整解决方案的项目清单 解 ...
- 实验12:Problem D: 判断两个圆之间的关系
Home Web Board ProblemSet Standing Status Statistics Problem D: 判断两个圆之间的关系 Problem D: 判断两个圆之间的关系 T ...
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q60-Q62)
Question 60You have a SharePoint site collection that contains 100 subsites.You plan to create a Web ...
- UnityShader之Shader格式篇【Shader资料1】
关于Shader,在Unity里面我们一般叫做ShaderLab,只要你的职业是与渲染搭边,Unity就与ShaderLab有着直接的关联,你都应该试着去学会它,其实我们在新手未有入门的时候,我们总是 ...
- UIlable 属性详用
我的好朋友给我制定了一个新的学习方法,从新的看每个控件,去了解他的每个属性,方法来让自己对oc的认识更加充实 今天重新认识一下UILable 的属性lable的阴影设置: 阴影的偏移量是以lable中 ...
- 快速排序(java版)
public class QuickSortTest{ //比较与交换 private static int partition(int[] source, int low, int hight) { ...
- OC语言-03-OC语言-三大特性
一.封装 1> 封装的定义 隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别 2> 封装的好处 可以通过set方法防止为成员变量设置不合理的值 仅向外部提供公 ...
- sql2008备份集中的数据库备份与现有的xxx数据库不同解决方法
原文链接:http://wncbl.cn/posts/1993c22/ 问题描述 今天在配置一个 ASP 站点时,导入以前的数据库备份文件,提示:sql2008备份集中的数据库备份与现有的xxx数据库 ...