maven创建父子依赖项目—pom
maven创建父子依赖项目
- maven创建父子依赖项目:
- 参考思路:
- 思维图:
- 三种项目示例:
- jar:控制台项目:
- war:web项目:
- war:web项目:(待写)
- 案例:横向拆分(按照项目结构进行拆分)
- 创建项目:
- 创建父级项目:
- 父级项目的功能/功能:
- 补充:项目目录下的<font color="red">idea进行隐藏:
- 创建子级项目:
- 补:三层结构:
- 创建dao子级项目:
- 创建service子级项目:(和创建dao子级项目相同)
- 创建web子级项目:(和创建dao子级项目不同)
- 父级项目和自己项目之间的联系:
- <font color="red">所有的jar包依赖必须在父级项目中pox.xml中引用!
- 在父级项目下pom.xml引入需要的jar包依赖:
- 效果/问题/解决展示:
- 父级统一管理jar包依赖:
- 引用父级jar包依赖:
- 子级dao进行引用父级的jar包依赖:
- 子级web进行引用父级的jar包依赖:
- 引用兄弟项目:
- 子级dao在pom.xml中引用兄弟的项目:
- 子级web在pom.xml中引用兄弟项目:
- 修改子级web项目下web.xml版本配置:
- 修改子级web项目下pom.xml编译版本:
- 配置tomcatb:
- 运行结果:
- 项目代码整体结构:
- 代码:
- 父级pom.xml:
- 子级dao:
- dao:
- StudentDAOImpl:
- util:
- BaseDAO:
- pom.xml:
- 子级service:
- StudentServletImpl:
- pom.xml:
- 子级web:
- web.xml:
- pom.xml:
- pom.xml:
单体项目:目前的项目都是单体项目,一个项目的结构。
父子依赖项目:可以嵌套很多层的项目结构,(父亲-儿子-孙子-重孙子…|项目套项目|大项目套小项目|等)是必须要会的!后期用springcloud开发就要用父子依赖结构的项目。
maven创建父子依赖项目:
参考思路:
引用兄弟项目:
思维图:
两种拆分项目的方式:横向拆分(按照项目结构拆分)、纵向拆分(按照业务模块拆分)
三种项目示例:
jar:控制台项目:
war:web项目:
war:web项目:(待写)
案例:横向拆分(按照项目结构进行拆分)
创建项目:
创建父级项目:
首先创建maven父类项目(这里的父级项目为普通的jar项目,具体要根据需要而定!)
父级项目的功能/功能:
父级项目是用来用来组织子级项目。 不需要写代码。将项目目录下的src直接删掉!
补充:项目目录下的idea进行隐藏:
创建子级项目:
补:三层结构:
dao被sevrice依赖,sevrice被web依赖。
三层结构,可分为三个子级项目,分别是dao、servlet、web。
创建dao子级项目:
创建service子级项目:(和创建dao子级项目相同)
创建web子级项目:(和创建dao子级项目不同)
父级项目和自己项目之间的联系:
父级的pom.xml:
dao子级的pom.xml:
service子级的pom.xml:
web子级的pom.xml:
所有的jar包依赖必须在父级项目中pox.xml中引用!
①问题/解决:子级的jar包依赖要保持一致,统一交给父级进行引入(dependency/ies),便于管理。
②问题/解决:父级引用依赖之后,所有子级继承父级所有的jar包依赖。但是有些子级根本就不需要某些jar包依赖。这时需要将所有子级的jar包依赖统一由父级进行引入和管理(dependencyManagement)【不做实际引用,只做管理】,子级根据需要从父级那里进行引入。
在父级项目下pom.xml引入需要的jar包依赖:
pom.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<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>com.yzh7</groupId><artifactId>maven_0811_parent</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>dao</module><module>service</module><module>web</module></modules><properties><webVersion>3.1</webVersion><servlet-version>4.0.1</servlet-version><jsp-version>2.2</jsp-version><jstl-version>1.2</jstl-version><spring-version>4.1.6.RELEASE</spring-version><commons-dbcp-version>1.4</commons-dbcp-version><aspectjweaver-version>1.8.6</aspectjweaver-version><mybatis-version>3.4.6</mybatis-version><mybatis-spring-version>1.3.3</mybatis-spring-version><log4j-version>1.2.9</log4j-version><mysql-connector-java-version>8.0.11</mysql-connector-java-version><jackson-version>2.5.0</jackson-version><commons-fileupload-version>1.3.1</commons-fileupload-version></properties><dependencies><!-- 添加javaEE支持 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${servlet-version}</version><!-- provided只在编译时支持,发布时不拷贝文件 --><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>${jsp-version}</version><!-- provided只在编译时支持,发布时不拷贝文件 --><scope>provided</scope></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>${jstl-version}</version></dependency><!-- junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- dbcp连接池 --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>${commons-dbcp-version}</version></dependency><!-- jackson json支持包 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson-version}</version></dependency><!-- mysql驱动类 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql-connector-java-version}</version></dependency></dependencies></project>
效果/问题/解决展示:
父级统一管理jar包依赖:
点击刷新父级pom.xml文件及右侧工具栏。可以看出所有的子级继承了父级的jar包依赖!
为了避免有些子级引用父类中不需要的jar包依赖。jar包依赖由父类进行统一的引入和管理(dependencyManagement),由子级根据需要从父类那里引用!
引用父级jar包依赖:
修改后的pom.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<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>com.yzh7</groupId><artifactId>maven_0811_parent</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>dao</module><module>service</module><module>web</module></modules><properties><webVersion>3.1</webVersion><servlet-version>4.0.1</servlet-version><jsp-version>2.2</jsp-version><jstl-version>1.2</jstl-version><spring-version>4.1.6.RELEASE</spring-version><commons-dbcp-version>1.4</commons-dbcp-version><aspectjweaver-version>1.8.6</aspectjweaver-version><mybatis-version>3.4.6</mybatis-version><mybatis-spring-version>1.3.3</mybatis-spring-version><log4j-version>1.2.9</log4j-version><mysql-connector-java-version>8.0.11</mysql-connector-java-version><jackson-version>2.5.0</jackson-version><commons-fileupload-version>1.3.1</commons-fileupload-version></properties><!-- dependencyManagement 依赖管理--><dependencyManagement><dependencies><!-- 添加javaEE支持 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${servlet-version}</version><!-- provided只在编译时支持,发布时不拷贝文件 --><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>${jsp-version}</version><!-- provided只在编译时支持,发布时不拷贝文件 --><scope>provided</scope></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>${jstl-version}</version></dependency><!-- junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- dbcp连接池 --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>${commons-dbcp-version}</version></dependency><!-- jackson json支持包 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson-version}</version></dependency><!-- mysql驱动类 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql-connector-java-version}</version></dependency></dependencies></dependencyManagement></project>
然后进行刷新pom.xml:(可以看到父级子级都没有了dependencies)
子级dao进行引用父级的jar包依赖:
补充:子级也可从父级引用jar包依赖,版本号由子级自己定义:
子级的版本号与父级不同。
编写代码:
子级web进行引用父级的jar包依赖:
引用兄弟项目:
子级dao在pom.xml中引用兄弟的项目:
刷新自己的pom.xml:
引用即可:
子级web在pom.xml中引用兄弟项目:
修改子级web项目下web.xml版本配置:
修改子级web项目下pom.xml编译版本:
配置tomcatb:
运行结果:
项目代码整体结构:
代码:
父级pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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>com.yzh7</groupId><artifactId>maven_0811_parent</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>dao</module><module>service</module><module>web</module></modules><properties><webVersion>3.1</webVersion><servlet-version>4.0.1</servlet-version><jsp-version>2.2</jsp-version><jstl-version>1.2</jstl-version><spring-version>4.1.6.RELEASE</spring-version><commons-dbcp-version>1.4</commons-dbcp-version><aspectjweaver-version>1.8.6</aspectjweaver-version><mybatis-version>3.4.6</mybatis-version><mybatis-spring-version>1.3.3</mybatis-spring-version><log4j-version>1.2.9</log4j-version><mysql-connector-java-version>8.0.11</mysql-connector-java-version><jackson-version>2.5.0</jackson-version><commons-fileupload-version>1.3.1</commons-fileupload-version></properties><!-- dependencyManagement 依赖管理--><dependencyManagement><dependencies><!-- 添加javaEE支持 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${servlet-version}</version><!-- provided只在编译时支持,发布时不拷贝文件 --><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>${jsp-version}</version><!-- provided只在编译时支持,发布时不拷贝文件 --><scope>provided</scope></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>${jstl-version}</version></dependency><!-- junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- dbcp连接池 --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>${commons-dbcp-version}</version></dependency><!-- jackson json支持包 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson-version}</version></dependency><!-- mysql驱动类 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql-connector-java-version}</version></dependency></dependencies></dependencyManagement></project>
子级dao:
dao:
StudentDAOImpl:
package com.dao;import com.util.BaseDAO;import java.util.List;
import java.util.Map;public class StudentDAOImpl {//不标准的代码步骤public List<Map<String,Object>> listAll(){return BaseDAO.executeQuery("select * from studentInfo",null);}
}
util:
BaseDAO:
package com.util;import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class BaseDAO {//四大金刚//驱动类private static final String DRIVER="com.mysql.cj.jdbc.Driver";//连接地址private static final String URL="jdbc:mysql://localhost:3306/70806_db?useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai";//用户名private static final String USER="root";//密码private static final String PASSWORD="123456";//获取连接public static Connection getConnection(){Connection con = null;try{//加载驱动类Class.forName(DRIVER);//获取连接con = DriverManager.getConnection(URL,USER,PASSWORD);}catch(Exception ex){ex.printStackTrace();}return con;}//关闭数据库对象public static void closeAll(Connection con,Statement st,ResultSet rs){if(rs!=null){try{rs.close();}catch(Exception ex){ex.printStackTrace();}}if(st!=null){try{st.close();}catch(Exception ex){ex.printStackTrace();}}if(con!=null){try{con.close();}catch(Exception ex){ex.printStackTrace();}}}//通用设置参数方法public static void setParams(PreparedStatement pst,Object[] params){if(params==null){return;}for(int i=0;i<params.length;i++){try{pst.setObject(i+1,params[i]);}catch(Exception ex){ex.printStackTrace();}}}//通用增删改public static int executeUpdate(String sql,Object[] params){Connection con = null;PreparedStatement pst = null;int res = -1;try{//获取连接con = getConnection();//创建预编译命令执行对象pst = con.prepareStatement(sql);//设置参数setParams(pst,params);//执行res = pst.executeUpdate();}catch(Exception ex){ex.printStackTrace();}finally{closeAll(con,pst,null);}return res;}//通用查询public static List<Map<String,Object>> executeQuery(String sql,Object[] params) {List<Map<String,Object>> rows = new ArrayList<>();Connection con = null;PreparedStatement pst = null;ResultSet rs = null;try{//获取连接 con = getConnection(); //获取命令对象pst = con.prepareStatement(sql);//设置参数setParams(pst,params);//执行查询rs = pst.executeQuery();//通过rs获取结果集的结构信息ResultSetMetaData rsmd = rs.getMetaData();//获取结果集的列数int colCount = rsmd.getColumnCount();//遍历查询结果,并封装到List<Map>中while(rs.next()){//用Map存储当前行的各个列数据Map<String,Object> map = new HashMap<>();//循环获取每一列的信息for(int i=1;i<=colCount;i++){//获取列名(使用rsmd)String colName = rsmd.getColumnLabel(i);//获取列值(使用rs)Object colVal = rs.getObject(i);//将当前列存储到map中map.put(colName,colVal); }//将遍历的当前行的数据存储到List中rows.add(map);}}catch(Exception ex){ex.printStackTrace();}finally{closeAll(con,pst,rs);}return rows;}}
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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"><parent><artifactId>maven_0811_parent</artifactId><groupId>com.yzh7</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>dao</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><!-- 引用父级的jar包依赖 --><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency></dependencies>
</project>
子级service:
StudentServletImpl:
package com.service;import com.dao.StudentDAOImpl;import java.util.List;
import java.util.Map;public class StudentServletImpl {//private StudentDAOImplpublic List<Map<String,Object>> listAll(){return new StudentDAOImpl().listAll();}
}
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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"><parent><artifactId>maven_0811_parent</artifactId><groupId>com.yzh7</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>service</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><!-- 引用兄弟项目 --><dependencies><dependency><groupId>com.yzh7</groupId><artifactId>dao</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies></project>
子级web:
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0">
</web-app>
pom.xml:
<%@ page import="com.service.StudentServletImpl" %><%--Created by IntelliJ IDEA.User: 33154Date: 2022/8/14Time: 19:34To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><%out.print(new StudentServletImpl().listAll());%>
</body>
</html>
pom.xml:
<?xml version="1.0" encoding="UTF-8"?><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"><parent><artifactId>maven_0811_parent</artifactId><groupId>com.yzh7</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>web</artifactId><packaging>war</packaging><name>web Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><!-- 添加javaEE支持 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><!-- provided只在编译时支持,发布时不拷贝文件 --><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><!-- provided只在编译时支持,发布时不拷贝文件 --><scope>provided</scope></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId></dependency><!-- 引用兄弟项目 --><dependency><groupId>com.yzh7</groupId><artifactId>service</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency></dependencies><build><finalName>web</finalName><pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>3.2.2</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin></plugins></pluginManagement></build>
</project>
maven创建父子依赖项目—pom相关推荐
- idea maven创建java项目_新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目(图文教程)...
之前都没试过用maven来管理过项目,但是手动找包导包确实不方便,于是今天用2016版的IDEA进行了maven的初尝试. 打开IDEA,创建新项目: 然后选择Maven,以及选择自己电脑的jdk: ...
- Maven3路程(六)用Maven创建Spring3 MVC项目
Maven3路程(六)用Maven创建Spring3 MVC项目 一. 环境 spring-framework-3.2.4.RELEASE jdk1.7.0_11 Maven3.0.5 ec ...
- java 多项目_Java开发小技巧(三):Maven多工程依赖项目
Maven多工程依赖项目开发流程 前言 本篇文章基于Java开发小技巧(二):自定义Maven依赖中创建的父工程project-monitor实现,运用我们自定义的依赖包进行多工程依赖项目的开发. 下 ...
- 用maven创建Spring MVC项目
用maven创建Spring MVC项目 mvn archetype:generate -DgroupId=fry-arthur -DartifactId=spring-mvc-study -Darc ...
- Maven创建父子工程详解
前言: 在微服务盛行的当下,我们创建的工程基本都是父子工程,我们通过父工程来引入jar,定义统一的版本号等,这样我们在子工程中就可以直接引用后使用了,而不需要去重复的声明版本号等,这样会更方便对整个项 ...
- Java工作笔记-使用Maven创建多模块项目
目录 前言 演示 前言 在某些项目中会用到多模块,一般情况下都使用Maven进行操作,然后手动写porn.xml,这样就算是spring boot也是手动写的,并没有使用官方的初始化项目工具. 演示 ...
- 使用IntelliJ IDEA 15和Maven创建Java Web项目(转)
1. Maven简介 相对于传统的项目,Maven 下管理和构建的项目真的非常好用和简单,所以这里也强调下,尽量使用此类工具进行项目构建, 它可以管理项目的整个生命周期. 可以通过其命令做所有相关的工 ...
- 新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目
之前都没试过用maven来管理过项目,但是手动找包导包确实不方便,于是今天用2016版的IDEA进行了maven的初尝试. 打开IDEA,创建新项目: 然后选择Maven,以及选择自己电脑的jdk: ...
- 在eclipse上使用Maven创建动态web项目
在eclipse上使用Maven创建web工程和使用Maven创建普通Java工程一样,不过在Packaging一栏选择"war",这个过程具体就不多说了,详情见我上一篇文章. 我 ...
最新文章
- java连接pg_postgresql 入门(含java、scala连接代码)
- 【转】JNI(Java Native Interface)的简介
- vue2.0 项目搭建 和vue 2.0 electron 项目搭建
- 关于MySQL count(distinct) 逻辑的另一个bug_
- tp5获取mysql版本_TP5 + MySQL 应用地址选择
- [vue] vue在开发过程中要同时跟N个不同的后端人员联调接口(请求的url不一样)时你该怎么办?
- python实现装饰器_Python装饰器是怎么实现的?
- 【数论学习笔记】同余
- QT中PRO文件写法的详细介绍,很有用,很重要!
- UVA1276 Network
- windbg学习---.browse打开一个新的command 窗口
- 【Andrioid】在Gradle编译时生成一个不同的版本号,动态设置应用程序标题,应用程序图标,更换常数...
- 计算机操作系统|汤小丹|第四版|习题答案
- GAMES101课程学习笔记—Lec 14(2)~16:Ray Tracing(2) BRDF、渲染方程、全局光照、路径追踪
- 移除元素---2022/03/16
- 生物信息学生物影像_大规模生物学的五点原因
- 回顾:Java影响者考虑了Java 11和JDK的状态
- Unity 延时的三种方法
- 运筹学可以应用的行业和领域
- EBAZ4205 ZYNQ 7Z010原始LINUX系统的修改与使用