用 Maven来管理java项目

第一章 Maven概述

擅长管理大型项目
自动管理你需要的jar包
自动进行下载我们需要的jar包。

1 maven的概念

​ Maven是项目进行模型抽象,充分运用面向对象的思想,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。

说白了: ==Maven是由Apache开发的一个工具。==用来管理java项目, 依赖管理(jar包的管理),项目构建.

2 Maven的作用

  • 依赖管理: maven对项目的第三方构件(jar包)进行统一管理。向工程中加入jar包不要手工从其它地方拷贝,通过maven定义jar包的坐标,自动从maven仓库中去下载到工程中。

  • 项目构建: maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。

  • maven对工程分模块构建,提高开发效率。

3 Maven的概念模型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DpQG5TOT-1591757069989)(day18_maven.assets/1530969038737.png)]

4 Maven的仓库

4.1 Maven的仓库
仓库名称 作用
本地仓库 相当于缓存,工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。
中央仓库 就是远程仓库,仓库中jar由专业团队(maven团队)统一维护。中央仓库的地址:http://repo1.maven.org/maven2/
远程仓库(私服) 私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven须要下载构件的时候。它从私服请求,假设私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cJ4rKkkH-1591757069991)(day18_maven.assets/1530969111977.png)]

4.2 仓库中存放的内容

  • Maven自身运行所需要的插件
  • 第三方框架(spring/mybatis/springmvc)和工具类的jar包
  • 我们自己开发的maven项目安装后的jar包

5 maven的坐标

​ Maven的一个核心的作用就是管理项目的依赖,引入我们所需的各种jar包等。在Maven中,不论什么一个依赖、插件或者项目构建的输出, 都能够称之为构件

​ 为了能自动化的解析任何一个Java构件. Maven必须将这些Jar包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们要说的坐标

​ 包括我们自己开发的项目,也是要通过坐标进行唯一标识的,这样才能才其它项目中进行依赖引用。坐标的定义元素如下:

  • groupId:项目组织唯一的标识符,实际对应JAVA的包的结构
    • (一般写公司的组织名称 例如:com.itheima,com.alibaba)
  • artifactId: 项目的名称
  • version:定义项目的当前版本

例如:要引入druid的jar包,只需要在pom.xml配置文件中配置引入druid的坐标即可:


<dependency>
  <groupId>com.alibabagroupId>
  <artifactId>druidartifactId>  
  <version>1.1.10version>  
dependency>

第二章 maven的安装(软件)

1 下载maven

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y0VCiM3J-1591757069992)(day18_maven.assets/1571635692104.png)]

2 安装maven

将maven压缩包解压, 复制到没有中文没有空格的目录下,即安装完毕

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KsNFvwkf-1591757069995)(day18_maven.assets/1571635743923.png)]

3 maven的目录介绍

目录名 作用
bin 可执行指令
boot 第三方类的加载框架
conf 配置文件目录
lib maven自身的类库

4 配置环境变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YKy0PpS5-1591757069997)(day18_maven.assets/1571636629488.png)]

MAVEN_HOME=D:\01_install\03_kaifa\apache-maven-3.6.1
Path=%MAVEN_HOME%\bin;... ...

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XZ95w1Rb-1591757069998)(day18_maven.assets/1571636683606.png)]

5 配置本地仓库

1、找到Maven解压目录\conf\settings.xml 
2、在setting.xml 文件中找到 localRepository 标签 
3、将 /path/to/local/repo从注释中取出 
4、将标签体内容修改为自定义的Maven仓库目录

2.5.1 将/资料/本地仓库/xxx.zip 解压

复制到 没有中文和空格 目录下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IiO3IIEn-1591757069999)(day18_maven.assets/1571637131430.png)]

2.5.2 配置本地仓库

在maven的安装目录中 maven/conf/settings.xml 配置本地仓库:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WAxATd8Q-1591757070000)(day18_maven.assets/1571637290924.png)]

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
		  
	<localRepository>D:\01_install\03_kaifa\repository_mavenlocalRepository>

2.5.3 配置阿里云远程仓库 (扩展)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-erflScAC-1591757070000)(day18_maven.assets/1571637387340.png)]

  <mirrors>
	<mirror>
		<id>alimavenid>
		<name>aliyun mavenname>
		<url>http://maven.aliyun.com/nexus/content/groups/public/url>
		<mirrorOf>centralmirrorOf>        
	 mirror>
  mirrors>

6 测试maven安装成功

打开cmd本地控制台, 输入

mvn -version

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bb6iad3v-1591757070001)(day18_maven.assets/1571637596719.png)]

7 小结

  1. Maven工具安装包 和 本地仓库解压到一个没有中文没有空格目录下. 建议分两个文件夹

  2. 配置Maven的时候(必须MAVEN_HOME)

    1. MAVEN_HOME: 配置到Maven工具解压目录
    2. path: 配置到Maven工具解压之后里面的bin目录

第三章 IDEA整合本地Maven

1 配置maven环境

方式一:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jB8ElGED-1591757070002)(day18_maven.assets/1571795547739.png)]

方式二

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TPTQxjP6-1591757070003)(day18_maven.assets/1571637961086.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vSNIhfZM-1591757070004)(day18_maven.assets/1571785194218.png)]

2 问题: 解决创建工程缓慢

因为 联网 下载内容, 所以 导致创建工程缓慢

-DarchetypeCatalog=internal

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-thMFY6y9-1591757070005)(day18_maven.assets/1571651141645.png)]

第四章 idea创建maven工程(重点重点重点)

1 创建空的工程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WIdMQdpx-1591757070006)(day18_maven.assets/1571638978518.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oSYgSoBE-1591757070007)(day18_maven.assets/1571639060631.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MAWTw46e-1591757070007)(day18_maven.assets/1571639097047.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FG3CzwD8-1591757070008)(day18_maven.assets/1571639128629.png)]

2 创建跳过骨架的java项目

2.1 how

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dVFbwDvr-1591757070009)(day18_maven.assets/1571639192677.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DKSGb9X3-1591757070010)(day18_maven.assets/1571639234551.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UbA9p98c-1591757070010)(day18_maven.assets/1571639808115.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u7Dlwjq7-1591757070011)(day18_maven.assets/1571639845612.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xxjMWdFe-1591757070012)(day18_maven.assets/1571639911574.png)]

目录 作用
main/java 存放java代码
resources 存放配置文件的
test/java 存放测试java代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9iVlPL8W-1591757070013)(day18_maven.assets/1571639974745.png)]

2.2 创建java代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ogwfs71x-1591757070014)(day18_maven.assets/1571640197272.png)]

package cn.itcast;

public class ProductDao {
    public void add() {
        System.out.println("1 添加商品 ... ...");
    }

    public void del() {
        System.out.println("2 删除商品 ... ...");
    }

    public void update() {
        System.out.println("3 修改商品 ... ...");
    }

    public void queryAll() {
        System.out.println("4 查询所有商品 ... ...");
    }
}

2.3 生成测试代码

正式上线前, 每个方法都必须经过测试, 目前我们能够想到的就是main方法.

因为一个类只有一个main方法, 一个类可能有上千个方法, 那得需要多少个方法, 所以 迫切需要更高效方法, junit测试登场了.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l6nYQvNg-1591757070015)(day18_maven.assets/1571640260878.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f0y0rfzd-1591757070016)(day18_maven.assets/1571640299024.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CeikPVzo-1591757070016)(day18_maven.assets/1571640360185.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TZNJyX3t-1591757070017)(day18_maven.assets/1537362379635.png)]

为什么junit报红? 因为缺少junit包, 导入缺少的junit包即可.

2.4 导入依赖

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g5efkuxF-1591757070018)(day18_maven.assets/1571640422448.png)]


<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.0modelVersion>

    <groupId>cn.itcastgroupId>
    <artifactId>day1801artifactId>
    <version>1.0-SNAPSHOTversion>

    <dependencies>
        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.12version>
        dependency>
    dependencies>
project>

报红解决:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9B7hIa7U-1591757070019)(day18_maven.assets/1571640449058.png)]

2.5 一个一个测试

完成测试代码:

package cn.itcast;

import org.junit.Test;

public class ProductDaoTest {

    private ProductDao productDao = new ProductDao();

    @Test
    public void add() {
        productDao.add();
    }

    @Test
    public void del() {
        productDao.del();
    }

    @Test
    public void update() {
        productDao.update();
    }

    @Test
    public void queryAll() {
        productDao.queryAll();
    }
}   

2.6 测试所有

一个一个测试,太累了, 给大家介绍一个简单的.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qhsPmnYa-1591757070020)(day18_maven.assets/1571640789291.png)]

3 创建有骨架 java工程(了解)

3.1 how?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u4xap3NL-1591757070021)(day18_maven.assets/1571643211567.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YMPJNeJo-1591757070022)(day18_maven.assets/1571643255407.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4UM24F1R-1591757070023)(day18_maven.assets/1571643318618.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rM0eDnze-1591757070023)(day18_maven.assets/1571643469936.png)]

* 缺少 resources目录 补上

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5jL9bF2A-1591757070024)(day18_maven.assets/1571643618970.png)]

pom.xml中会产生很多多余的配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-754yA0HV-1591757070025)(day18_maven.assets/1571643672589.png)]

总结: 因为创建有骨架的java工程会产生很多多余的配置, 所以实际开发中一般不用.

4 创建有骨架的web工程(了解)

4.1 how?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WAC3GUmu-1591757070026)(day18_maven.assets/1571643983838.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gs6HRJtu-1591757070027)(day18_maven.assets/1571644003571.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Usny9Y05-1591757070028)(day18_maven.assets/1571644017266.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-230sQ3kq-1591757070029)(day18_maven.assets/1571644028167.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LgKY8kub-1591757070030)(day18_maven.assets/1571644081864.png)]

4.2 标准web工程目录结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZS7tBlMS-1591757070031)(day18_maven.assets/1537365617727.png)]

经过对比发现如下问题:

4.3 缺少java目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6HKzdgn4-1591757070032)(day18_maven.assets/1537365726887.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8FX7GKbW-1591757070033)(day18_maven.assets/1537365747597.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TLBrXW8j-1591757070034)(day18_maven.assets/1537365811337.png)]

更改java目录属性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YUQlwDJy-1591757070035)(day18_maven.assets/1537365915916.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VjbzoVSy-1591757070035)(day18_maven.assets/1537365941638.png)]

4.4 缺少resources目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1d8iDamu-1591757070036)(day18_maven.assets/1537365960822.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1kThbC0N-1591757070037)(day18_maven.assets/1537365982221.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uTxeiz2H-1591757070038)(day18_maven.assets/1537365994589.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G1qHjyOL-1591757070039)(day18_maven.assets/1537366029843.png)]

4.5 缺少test目录

4.5.1 新建test目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k4NpZ0rj-1591757070040)(day18_maven.assets/1537366119328.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aeOgsD6D-1591757070040)(day18_maven.assets/1537366137117.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pxj6s4KY-1591757070041)(day18_maven.assets/1537366151796.png)]

4.5.2 新建test.java目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MMuLU34o-1591757070042)(day18_maven.assets/1537366176109.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hMtr7c66-1591757070043)(day18_maven.assets/1537366192184.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P9joMhmB-1591757070044)(day18_maven.assets/1537366210414.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pIHHgy7p-1591757070044)(day18_maven.assets/1537366237164.png)]

总结: 使用骨架创建的web项目 在开发时不常用!
	理由1: 在pom.xml增加不必要的配置
	理由2: 完整的web工程缺的东西太多!

5 创建跳过骨架的web工程(重点重点重点)

5.1 创建无骨架的java工程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-13zOr5mq-1591757070045)(day18_maven.assets/1571644419657.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IeTOwIyY-1591757070046)(day18_maven.assets/1571644449059.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u6m3Xhle-1591757070047)(day18_maven.assets/1571644473424.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K1iFNSR4-1591757070048)(day18_maven.assets/1571644497436.png)]

修改打包方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6lnczjgT-1591757070048)(day18_maven.assets/1571644641270.png)]

标准web项目的目录结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1a6NcWVT-1591757070050)(day18_maven.assets/1537365617727.png)]

5.2 问题: 缺少webapp 目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qg0QBq2U-1591757070051)(day18_maven.assets/1571644992692.png)]

5.3 问题: 缺少 web.xml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H5aKJH3f-1591757070052)(day18_maven.assets/1571645289905.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bQPwmn2G-1591757070052)(day18_maven.assets/1571645306990.png)]

5.4 tomcat插件

5.4.1 在pom.xml中配置

因为 web项目最终跑在web服务器中, 所以需要配置 web服务器(tomcat只是其中一个)

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.0modelVersion>

    <groupId>cn.itcast.mavengroupId>
    <artifactId>web02artifactId>
    <version>1.0-SNAPSHOTversion>
    
    <packaging>warpackaging>
    
    <build>
        <plugins>
            
            <plugin>
                <groupId>org.apache.tomcat.mavengroupId>
                <artifactId>tomcat7-maven-pluginartifactId>
                <version>2.2version>
                <configuration>
                    
                    <port>80port>
                    
                    <path>/day1804path>
                configuration>
            plugin>
        plugins>
    build>
project>
5.4.2 准备index.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zgdzzYZK-1591757070053)(day18_maven.assets/1571645670350.png)]


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
head>
<body>
    <h1>这是我的第一个maven版本的web项目!h1>
body>
html>
5.4.3 启动tomcat

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6H4u5CrR-1591757070054)(day18_maven.assets/1571645721863.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s9MazFhG-1591757070055)(day18_maven.assets/1571645760741.png)]

测试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Rg5jJQ0-1591757070055)(day18_maven.assets/1571645800246.png)]

5.4.4 简化启动tomcat

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gF6iZ9Sh-1591757070056)(day18_maven.assets/1571646401841.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qmWvk89f-1591757070057)(day18_maven.assets/1571646440164.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IWK0DbWN-1591757070057)(day18_maven.assets/1571646512205.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AQaw2Kuy-1591757070058)(day18_maven.assets/1571646600055.png)]

4.6.3 创建servlet

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4j2KBlEP-1591757070059)(day18_maven.assets/1571646808325.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t3alz01Q-1591757070059)(day18_maven.assets/1571646885072.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LNNMzKn7-1591757070060)(day18_maven.assets/1571646966414.png)]

4.6.3.1 解决servlet因为缺少servlet.jar包报错

在pom.xml增加servlet依赖

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sksIk9Sr-1591757070061)(day18_maven.assets/1571647275049.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OgZJ5huk-1591757070063)(day18_maven.assets/1571647302251.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8LDwHFxr-1591757070064)(day18_maven.assets/1571647352446.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M3E2PKTx-1591757070065)(day18_maven.assets/1571647411268.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ebf2F3yG-1591757070066)(day18_maven.assets/1571647528706.png)]


<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.0modelVersion>

    <groupId>cn.itcastgroupId>
    <artifactId>day1804artifactId>
    <version>1.0-SNAPSHOTversion>

    
    <packaging>warpackaging>

    <dependencies>

        
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>3.1.0version>
            
            <scope>providedscope>
        dependency>

    dependencies>

    
    <build>
        <plugins>
            
            <plugin>
                <groupId>org.apache.tomcat.mavengroupId>
                <artifactId>tomcat7-maven-pluginartifactId>
                <version>2.2version>
                <configuration>
                    
                    <port>80port>
                    
                    <path>/day1804path>
                configuration>
            plugin>
        plugins>
    build>

project>

经过观察,servlet不再报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zip956ZQ-1591757070069)(day18_maven.assets/1571647734636.png)]

测试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jklwpgKX-1591757070070)(day18_maven.assets/1571647714708.png)]

第五章 maven的常用指令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2azvI4rh-1591757070072)(day18_maven.assets/1571647994685.png)]

1 clean命令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FUL3H9za-1591757070072)(day18_maven.assets/1530977033459.png)]

1.1 方式一

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pjIXUhHY-1591757070073)(day18_maven.assets/1571648094960.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EDMiKqkT-1591757070074)(day18_maven.assets/1571648143525.png)]

发现 target目录 被 清除了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oAkFFgCF-1591757070075)(day18_maven.assets/1571648180288.png)]

1.2 方式二

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dkV5Xgbd-1591757070076)(day18_maven.assets/1571813451648.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qbBwpd9X-1591757070076)(day18_maven.assets/1571648740838.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lvlBvqP3-1591757070077)(day18_maven.assets/1571649010223.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FUUESocZ-1591757070078)(day18_maven.assets/1571649184818.png)]

执行清屏命令:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XA8NhGOp-1591757070079)(day18_maven.assets/1571649234950.png)]

经过观察发现target目录消失:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ork9Ecg1-1591757070079)(day18_maven.assets/1571649285060.png)]

2 compile命令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yXxiqAsx-1591757070080)(day18_maven.assets/1530977220710.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FFLFHiPn-1591757070081)(day18_maven.assets/1571649436088.png)]

3 test命令

测试命令: 执行 src/test/java 下junit的测试用例

  • 准备工作1: 业务类

    package cn.itcast.service;
    
    public class UserService {
    
        public void add() {
            System.out.println("=============1 UserService.add 天生傲娇 ... ...");
        }
    
        public void queryAll() {
            System.out.println("=============2 UserService.queryAll ... ...");
        }
    }
    
  • 准备工作2: 测试类

    package cn.itcast.service;
    
    import org.junit.Test;
    
    public class UserServiceTest {
    
        private UserService userService = new UserService();
        @Test
        public void add() {
            userService.add();
        }
    
        @Test
        public void queryAll() {
            userService.queryAll();
        }
    }
    
  • 测试:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lvqFaQDb-1591757070081)(day18_maven.assets/1571649973784.png)]

4 package命令

mvn package, 打包项目

4.1 对java项目打包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-03s2KVny-1591757070084)(day18_maven.assets/1571650068040.png)]

4.2 对web项目打包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dzE0WArt-1591757070084)(day18_maven.assets/1571650191556.png)]

5 install命令

mvn install, 打包后将其安装在本地仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FDdrxulG-1591757070085)(day18_maven.assets/1571650295273.png)]

安装完毕后,可以在本地仓库中找到 对应的项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nNAOh0Yc-1591757070086)(day18_maven.assets/1571650412338.png)]

第六章 依赖管理

1 maven插件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ir1bFsko-1591757070087)(day18_maven.assets/1530978764025.png)]

1.1 jdk编译版本的插件

pom.xml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LF5qMVz4-1591757070087)(day18_maven.assets/1571650607384.png)]

            
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>3.2version>
                <configuration>
                    <source>1.8source>
                    <target>1.8target>
                    <encoding>UTF-8encoding>
                configuration>
            plugin>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c9d3kL1M-1591757070088)(day18_maven.assets/1571650718594.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OgeBZ4JA-1591757070089)(day18_maven.assets/1571650688355.png)]

1.2 tomcat7服务端的插件

  • 配置tomcat插件

<plugin>
    <groupId>org.apache.tomcat.mavengroupId>
    <artifactId>tomcat7-maven-pluginartifactId>
    <version>2.2version>
    <configuration>
        
        <port>80port>
        
        <path>/day1804path>
    configuration>
plugin>
  • 运行tomcat插件

    • 方式一

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t0QwG3ML-1591757070090)(day18_maven.assets/1571813786908.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p3g8Rkrt-1591757070091)(day18_maven.assets/1571651442564.png)]

    • 方式二

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KLC7n4Fn-1591757070091)(day18_maven.assets/1571651462914.png)]

  • tomcat 插件注意问题

    Maven的中央仓库中只有tomcat7.X版本

    如果想使用tomcat8.X版本,

    1. 需要从第三方仓库查找
      2. 或者使用idea集成外部的tomcat插件

2 导入依赖

2.1 导入junit依赖

  • 导入junit坐标
<dependencies>
    <dependency>
        <groupId>junitgroupId>
        <artifactId>junitartifactId>
        <version>4.12version>
    dependency>
dependencies>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dxY2jIp2-1591757070092)(day18_maven.assets/1530980380837.png)]

  • 进行单元测试
import org.junit.Test;

public class DemoTest {
    @Test
    public void demo1() {
        System.out.println("敢于亮剑,绝不后退!");
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9p1r7Bak-1591757070092)(day18_maven.assets/1530980434008.png)]

2.2 导入servlet的依赖

  • 创建servlet, 但是发现报错,原因是没有导入servlet的坐标依赖

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-85T5WPMg-1591757070093)(day18_maven.assets/1530980596377.png)]

  • 导入servlet的坐标依赖

<dependency>
    <groupId>javax.servletgroupId>
    <artifactId>javax.servlet-apiartifactId>
    <version>3.1.0version>
    <scope>providedscope>
dependency>
  • 原有的servlet报错恢复正常

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6NWyAtS2-1591757070094)(day18_maven.assets/1530980728536.png)]

3 依赖范围

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y04EoQm7-1591757070095)(day18_maven.assets/1530980805944.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qR8KnAQc-1591757070095)(day18_maven.assets/1530980856407.png)]

第七章 maven案例: 完成用户列表显示功能

1 需求分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QQeyqoZw-1591757070096)(day18_maven.assets/1531021609684.png)]

2 准备工作

2.1 sql语句

create database day18_db;

use day18_db;

create table user(
	id int primary key auto_increment,
	name varchar(50),
	money int
);

insert into user(id, name, money) values(null, '张三', 1000);
insert into user(id, name, money) values(null, '李四', 1000);
insert into user(id, name, money) values(null, '王五', 1000);

2.2 创建项目(跳过骨架的java项目)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5OhJXbwX-1591757070097)(day18_maven.assets/1571652093789.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6I9jHNTL-1591757070098)(day18_maven.assets/1571652122987.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3n7Vn6u3-1591757070099)(day18_maven.assets/1571652156154.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tNVcWupz-1591757070100)(day18_maven.assets/1571652239439.png)]

2.3 添加webapp目录 和 web.xml文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Vpe9jZm-1591757070100)(day18_maven.assets/1571652573617.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sQC1FWMg-1591757070101)(day18_maven.assets/1571652825828.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V2XCwIOd-1591757070101)(day18_maven.assets/1571652856355.png)]

2.4 导包(pom.xml)


<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <groupId>cn.itcastgroupId>
    <artifactId>day1805artifactId>
    <version>1.0-SNAPSHOTversion>
    
    
    <packaging>warpackaging>

    
    <dependencies>
        
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>3.1.0version>
            <scope>providedscope>
        dependency>

        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.12version>
            <scope>testscope>
        dependency>

        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.38version>
        dependency>

        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.4.5version>
        dependency>

        
        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-log4j12artifactId>
            <version>1.6.4version>
        dependency>

        
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
            <version>2.4.2version>
        dependency>

    dependencies>

    
    <build>
        <plugins>
            
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>3.2version>
                <configuration>
                    <source>1.8source>
                    <target>1.8target>
                    <encoding>UTF-8encoding>
                configuration>
            plugin>

            
            <plugin>
                <groupId>org.apache.tomcat.mavengroupId>
                <artifactId>tomcat7-maven-pluginartifactId>
                <version>2.2version>
                <configuration>
                    
                    <port>9000port>
                    
                    <path>/day1805path>
                configuration>
            plugin>
        plugins>
    build>

project>

3 实现

3.1 数据层

3.1.1 接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EmJSOo6W-1591757070102)(day18_maven.assets/1571656978762.png)]

package cn.itcast.mapper;

import cn.itcast.pojo.User;

import java.util.List;

public interface UserMapper {

    /*查询所有*/
    public List<User> queryAll();

}
3.1.2 配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XIEYtayz-1591757070103)(day18_maven.assets/1571657003788.png)]



<mapper namespace="cn.itcast.mapper.UserMapper">
    
    <select id="queryAll" resultType="User">
        select * from tb_user
    select>
mapper>

3.2 业务层

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tMCrzSRB-1591757070103)(day18_maven.assets/1571657032008.png)]

3.2.1 接口
package cn.itcast.service;

import cn.itcast.pojo.User;

import java.util.List;

public interface UserService {
    /**
     * 查询所有
     */
    public List<User> queryAll();
}
3.2.2 实现类
package cn.itcast.service.impl;

import cn.itcast.base.BaseService;
import cn.itcast.mapper.UserMapper;
import cn.itcast.pojo.User;
import cn.itcast.service.UserService;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class UserServiceImpl extends BaseService implements UserService {
    @Override
    public List<User> queryAll() {
        SqlSession sqlSession = getSession();
        UserMapper userMapper = getDao(sqlSession, UserMapper.class);
        List<User> userList = null;
        try {
            userList = userMapper.queryAll();
            commitAndCloseSession(sqlSession);
        } catch (Exception e) {
            e.printStackTrace();
            rollbackAndCloseSession(sqlSession);
        }
        return userList;
    }
}
3.2.3 测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pQpqtAQ7-1591757070104)(day18_maven.assets/1571657054504.png)]

package cn.itcast.service;

import cn.itcast.pojo.User;
import cn.itcast.service.impl.UserServiceImpl;
import org.junit.Test;

import java.util.List;

public class UserServiceTest {

    @Test
    public void queryAll() {
        UserService userService = new UserServiceImpl();
        List<User> userList = userService.queryAll();
        for (User user : userList) {
            System.out.println(user);
        }
    }
}

3.3 web层

3.3.1 代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mX1aUOhF-1591757070105)(day18_maven.assets/1571657338301.png)]

package cn.itcast.web;

import cn.itcast.pojo.User;
import cn.itcast.service.UserService;
import cn.itcast.service.impl.UserServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/userQueryAll")
public class UserQueryAllServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 解决获取参数的中文乱码 (浏览器 -> 服务器)
        request.setCharacterEncoding("utf-8");
        // 解决浏览器出现的中文乱码
        response.setContentType("text/html;charset=utf-8");

        // 1 调用业务层 查询所有用户
        UserService userService = new UserServiceImpl();
        List<User> userList = userService.queryAll();
        // 2 将所用用户集合 转成json字符串
        ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsString(userList);
        // 3 将json字符串返回给浏览器
        response.getWriter().println(json);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}
3.3.2 重启测试
http://localhost:9000/day1805/userQueryAll

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QZzxRoUi-1591757070106)(day18_maven.assets/1571657403652.png)]

3.4 页面

3.4.1 导入依赖的js文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lEq1FnBB-1591757070106)(day18_maven.assets/1571657999128.png)]

3.4.2 页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ckY9o1A7-1591757070107)(day18_maven.assets/1571658039345.png)]


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
head>
<body>
<div id="app">
    <table align="center" border="1" cellpadding="10" cellspacing="0" width="50%">
        <tr>
            <th>编号th>
            <th>姓名th>
            <th>存款th>
            <th>操作th>
        tr>
        <tr v-for="user in userList">
            <td>{{user.id}}td>
            <td>{{user.name}}td>
            <td>{{user.money}}td>
            <td>
                <a href="javascript:void(0)">删除a>
                <a href="javascript:void(0)">修改a>
            td>
        tr>
    table>
div>
<script src="js/vue.min.js">script>
<script src="js/axios-0.18.0.js">script>
<script src="js/user.js">script>
body>
html>
3.4.3 测试
http://localhost:9000/day1805/userList.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WTJvwha4-1591757070108)(day18_maven.assets/1571658074491.png)]

第八章 常见问题汇总

1 tomcat插件重复启动:导致端口占用
2 index.html放到WEB-INF下面,导致访问不到这个html页面
3 名称不叫index.html,结果直接输入localhost:8080,访问不到这个页面
4 关联了jre,需要使用JDK
5 需要使用我给的仓库

第九章 继承

1 why?

需求:

​ a项目 需要mysql包

​ b项目 需要mysql包

​ c项目 需要mysql包

​ 都需要,所以需要配置三次

问题:

​ 重复的代码配置了三次, 次数 100万个项目, 配置100万次

解决:

​ 继承了, 拥有了父类的一切

2 how

2.1 父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.0modelVersion>

    <groupId>cn.itcastgroupId>
    <artifactId>itcast_parentartifactId>
    <version>1.0-SNAPSHOTversion>

    <properties>
        <servlet.version>3.1.0servlet.version>
        <mysql.version>5.1.32mysql.version>
        <jackson.version>2.5.2jackson.version>
    properties>

    
    
    <dependencyManagement>
        <dependencies>
            
            <dependency>
                <groupId>javax.servletgroupId>
                <artifactId>javax.servlet-apiartifactId>
                <version>${servlet.version}version>
                <scope>providedscope>
            dependency>

            
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>${mysql.version}version>
            dependency>

            
            <dependency>
                <groupId>com.fasterxml.jackson.coregroupId>
                <artifactId>jackson-databindartifactId>
                <version>${jackson.version}version>
            dependency>
        dependencies>
    dependencyManagement>

    
    <build>
        <plugins>
            
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>3.2version>
                <configuration>
                    <source>1.8source>
                    <target>1.8target>
                    <encoding>UTF-8encoding>
                configuration>
            plugin>
        plugins>

        <pluginManagement>
            <plugins>
                
                <plugin>
                    <groupId>org.apache.tomcat.mavengroupId>
                    <artifactId>tomcat7-maven-pluginartifactId>
                    <version>2.2version>
                plugin>
            plugins>
        pluginManagement>
    build>

project>

2.2 子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">
    <parent>
        <artifactId>itcast_parentartifactId>
        <groupId>cn.itcastgroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>itcast_daoartifactId>

    <dependencies>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            
            <version>5.1.38version>
        dependency>

        
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <scope>providedscope>
        dependency>

        
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
        dependency>
    dependencies>

project>

第十章 聚合工程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1w1GnJma-1591757070109)(day18_maven.assets/1571822613116.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VuoIgwCs-1591757070109)(day18_maven.assets/1571822628116.png)]

1 分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GexJatEm-1591757070110)(day18_maven.assets/1535444139772.png)]

2 创建父工程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qcq9NWwc-1591757070112)(day18_maven.assets/1571757683359.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fXCN6xQR-1591757070113)(day18_maven.assets/1571757866402.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-so7yB9ip-1591757070114)(day18_maven.assets/1571757725403.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GDRIra05-1591757070114)(day18_maven.assets/1571757742830.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N9n3SVnR-1591757070115)(day18_maven.assets/1571757786813.png)]

2.1 删除src目录

因为这个项目的唯一作用是用来管理版本的, 所以删掉没有用的src目录

删除完成,如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vpSnd9Zm-1591757070115)(day18_maven.assets/1571757918526.png)]

2.2 修改pom.xml管理版本


<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <groupId>cn.itcast.itheimagroupId>
    <artifactId>itheima_parentartifactId>
    <version>1.0-SNAPSHOTversion>

    
    <packaging>pompackaging>

    
    <properties>
        <junit.version>4.12junit.version>
        <servlet.version>3.1.0servlet.version>
        <mysql.version>5.1.38mysql.version>
        <mybatis.version>3.4.5mybatis.version>
        <slf4j.version>1.6.4slf4j.version>
        <jackson.version>2.4.2jackson.version>
    properties>

    
    <dependencyManagement>
        <dependencies>
            
            <dependency>
                <groupId>junitgroupId>
                <artifactId>junitartifactId>
                <version>${junit.version}version>
            dependency>

            
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>${mysql.version}version>
            dependency>

            
            <dependency>
                <groupId>org.mybatisgroupId>
                <artifactId>mybatisartifactId>
                <version>${mybatis.version}version>
            dependency>

            
            <dependency>
                <groupId>org.slf4jgroupId>
                <artifactId>slf4j-log4j12artifactId>
                <version>${slf4j.version}version>
            dependency>

            
            <dependency>
                <groupId>com.fasterxml.jackson.coregroupId>
                <artifactId>jackson-databindartifactId>
                <version>${jackson.version}version>
            dependency>

            
            <dependency>
                <groupId>javax.servletgroupId>
                <artifactId>javax.servlet-apiartifactId>
                <version>${servlet.version}version>
                <scope>providedscope>
            dependency>

        dependencies>
    dependencyManagement>

    
    <build>
        <plugins>
            
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>3.2version>
                <configuration>
                    <source>1.8source>
                    <target>1.8target>
                    <encoding>UTF-8encoding>
                configuration>
            plugin>
        plugins>

        <pluginManagement>
            <plugins>
                
                <plugin>
                    <groupId>org.apache.tomcat.mavengroupId>
                    <artifactId>tomcat7-maven-pluginartifactId>
                    <version>2.2version>
                plugin>
            plugins>
        pluginManagement>
    build>

project>

3 数据层子模块

3.1 创建子模块项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gUCVwLMd-1591757070116)(day18_maven.assets/1571758247586.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b88Y7T72-1591757070116)(day18_maven.assets/1571758275176.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oju9Rric-1591757070117)(day18_maven.assets/1571758344641.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NgOD0n5x-1591757070118)(day18_maven.assets/1571758387771.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h6wNUu6w-1591757070118)(day18_maven.assets/1571758456799.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HdBkvSkg-1591757070119)(day18_maven.assets/1571758486904.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iZk4drrc-1591757070119)(day18_maven.assets/1571758524723.png)]

3.2 pom.xml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CzPj3g5F-1591757070120)(day18_maven.assets/1571758543316.png)]


<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>itheima_parentartifactId>
        <groupId>com.itheimagroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>itheima_daoartifactId>

    
    <packaging>jarpackaging>

    <dependencies>
        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <scope>testscope>
        dependency>

        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
        dependency>

        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
        dependency>

        
        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-log4j12artifactId>
        dependency>
    dependencies>
project>

3.3 复制内容到 src 目录下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-83VP9I1W-1591757070121)(day18_maven.assets/1571758721673.png)]

3.4 复制内容到 resources 目录下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0VB8zu2D-1591757070121)(day18_maven.assets/1571758801627.png)]

3.5 测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7OTuh4Dx-1591757070122)(day18_maven.assets/1571759032005.png)]

package cn.itcast.mapper;

import cn.itcast.pojo.User;
import cn.itcast.utils.SqlSessionUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Test;

import java.util.List;

public class UserMapperTest {

    UserMapper userMapper;
    SqlSession sqlSession;

    @Before
    public void init() throws Exception {
        sqlSession = SqlSessionUtils.openSession();
        userMapper = sqlSession.getMapper(UserMapper.class);
    }

    @Test
    public void queryAll() {
        List<User> userList = userMapper.queryAll();
        for (User user : userList) {
            System.out.println(user);
        }
    }
}

4 业务层子模块

4.1 创建子模块项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8TLRgfN3-1591757070122)(day18_maven.assets/1571759263156.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RwFcmFEg-1591757070123)(day18_maven.assets/1571759290140.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lK8nr2Qd-1591757070124)(day18_maven.assets/1571759357195.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kKl1koO2-1591757070124)(day18_maven.assets/1571759386610.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LGMmZCRH-1591757070125)(day18_maven.assets/1571759436199.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-asbHGzz3-1591757070125)(day18_maven.assets/1571759477172.png)]

4.2 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">
    <parent>
        <artifactId>itheima_parentartifactId>
        <groupId>com.itheimagroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>itheima_serviceartifactId>

    <dependencies>
        
        <dependency>
            <artifactId>itheima_daoartifactId>
            <groupId>com.itheimagroupId>
            <version>1.0-SNAPSHOTversion>
        dependency>

        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <scope>testscope>
        dependency>

    dependencies>

project>

4.3 复制内容到src目录下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4en9aDFR-1591757070126)(day18_maven.assets/1571759626148.png)]

4.4 测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CtIqlE1C-1591757070126)(day18_maven.assets/1571759666090.png)]

package cn.itcast.service;


import cn.itcast.pojo.User;
import cn.itcast.service.impl.UserServiceImpl;
import org.junit.Test;

import java.util.List;

public class UserServiceTest {

    @Test
    public void queryAll() {
        UserService userService = new UserServiceImpl();
        List<User> userList = userService.queryAll();
        for (User user : userList) {
            System.out.println(user);
        }
    }
}

5 web层工程

5.1 创建子模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EzplvhOF-1591757070127)(day18_maven.assets/1571759773164.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yjNXchaw-1591757070128)(day18_maven.assets/1571759811629.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CG4yluJO-1591757070128)(day18_maven.assets/1571759839291.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6l2dm6rV-1591757070129)(day18_maven.assets/1571759871194.png)]

5.2 改造成web项目

5.2.1 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">
    <parent>
        <artifactId>itheima_parentartifactId>
        <groupId>com.itheimagroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>itheima_webartifactId>

    
    <packaging>warpackaging>

    <build>
        <plugins>
            
            <plugin>
                <groupId>org.apache.tomcat.mavengroupId>
                <artifactId>tomcat7-maven-pluginartifactId>
                <version>2.2version>
                <configuration>
                    
                    <path>/path>
                    
                    <port>9000port>
                configuration>
            plugin>
        plugins>
    build>

project>
5.2.2 补充webapp目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lQqEjVmB-1591757070130)(day18_maven.assets/1571761310525.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vA2UjtgZ-1591757070131)(day18_maven.assets/1571761420838.png)]

5.2.3 增加测试页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-buNH2LxY-1591757070132)(day18_maven.assets/1571761705542.png)]


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
head>
<body>
    <h1>敢于亮剑,绝不后退!h1>
body>
html>
5.2.4 启动tomcat 方式一

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oPVGWAJZ-1591757070132)(day18_maven.assets/1571761772983.png)]

测试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oFM9B7j2-1591757070133)(day18_maven.assets/1571762003244.png)]

5.2.5 启动tomcat方式二

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-feRedYsP-1591757070133)(day18_maven.assets/1571762143716.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MV5y9c7k-1591757070134)(day18_maven.assets/1571762259914.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w8LZgPwt-1591757070135)(day18_maven.assets/1571762287940.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tn02l3dV-1591757070136)(day18_maven.assets/1571762332956.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KnsO1yI1-1591757070137)(day18_maven.assets/1571762502256.png)]

5.3 调试 Servlet

5.3.1 pom.xml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PKM4gZlI-1591757070138)(day18_maven.assets/1571762839168.png)]


<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>itheima_parentartifactId>
        <groupId>com.itheimagroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>itheima_webartifactId>

    
    <packaging>warpackaging>

    <build>
        <plugins>
            
            <plugin>
                <groupId>org.apache.tomcat.mavengroupId>
                <artifactId>tomcat7-maven-pluginartifactId>
                <version>2.2version>
                <configuration>
                    
                    <path>/path>
                    
                    <port>9000port>
                configuration>
            plugin>
        plugins>
    build>

    <dependencies>
        
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
        dependency>

        
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <scope>providedscope>
        dependency>
    dependencies>

project>
5.3.2 编写servlet

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8YO1gomA-1591757070138)(day18_maven.assets/1571762910622.png)]

package cn.itcast.web;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 解决获取参数的中文乱码 (浏览器 -> 服务器)
        request.setCharacterEncoding("utf-8");
        // 解决浏览器出现的中文乱码
        response.setContentType("text/html;charset=utf-8");

        response.getWriter().println("你们真的很棒!");
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}
5.3.3 测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gbP1DJzL-1591757070139)(day18_maven.assets/1571762961879.png)]

5.4 复制对应内容到web目录下

5.4.1 复制 servlet到web目录下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eqkCP8wp-1591757070140)(day18_maven.assets/1571763283828.png)]

5.4.2 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">
    <parent>
        <artifactId>itheima_parentartifactId>
        <groupId>com.itheimagroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>itheima_webartifactId>

    
    <packaging>warpackaging>

    <build>
        <plugins>
            
            <plugin>
                <groupId>org.apache.tomcat.mavengroupId>
                <artifactId>tomcat7-maven-pluginartifactId>
                <version>2.2version>
                <configuration>
                    
                    <path>/path>
                    
                    <port>9000port>
                configuration>
            plugin>
        plugins>
    build>

    <dependencies>
        
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
        dependency>

        
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <scope>providedscope>
        dependency>

        
        <dependency>
            <artifactId>itheima_serviceartifactId>
            <groupId>com.itheimagroupId>
            <version>1.0-SNAPSHOTversion>
        dependency>

    dependencies>

project>
5.4.3 启动tomcat报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zXjiTDMQ-1591757070141)(day18_maven.assets/1571763398714.png)]

  • 原因: 因为仓库中没有 service 的 jar包

  • 解决:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3kQL4B31-1591757070142)(day18_maven.assets/1571764006201.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A0bJNtJk-1591757070143)(day18_maven.assets/1571763708953.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LhylmNBu-1591757070144)(day18_maven.assets/1571763542436.png)]

再次启动正常, 测试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MPuS4M1M-1591757070144)(day18_maven.assets/1571764065291.png)]

5.5 聚合

问题

每次发布项目都需要依次发布 父模块和依赖的模块, 是不是很麻烦

解决

通过聚合交给父模块管理,一次性发布所有的项目

how

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SXBsxKA1-1591757070145)(day18_maven.assets/1571764692138.png)]

.org/xsd/maven-4.0.0.xsd">

itheima_parent
com.itheima
1.0-SNAPSHOT

4.0.0

itheima_web


war


    
        
        
            org.apache.tomcat.maven
            tomcat7-maven-plugin
            2.2
            
                
                /
                
                9000
            
        
    



    
    
        com.fasterxml.jackson.core
        jackson-databind
    

    
    
        javax.servlet
        javax.servlet-api
        provided
    

    
    
        itheima_service
        com.itheima
        1.0-SNAPSHOT
    


```
5.4.3 启动tomcat报错

[外链图片转存中…(img-zXjiTDMQ-1591757070141)]

  • 原因: 因为仓库中没有 service 的 jar包

  • 解决:

    [外链图片转存中…(img-3kQL4B31-1591757070142)]

    [外链图片转存中…(img-A0bJNtJk-1591757070143)]

    [外链图片转存中…(img-LhylmNBu-1591757070144)]

再次启动正常, 测试:

[外链图片转存中…(img-MPuS4M1M-1591757070144)]

5.5 聚合

问题

每次发布项目都需要依次发布 父模块和依赖的模块, 是不是很麻烦

解决

通过聚合交给父模块管理,一次性发布所有的项目

how

[外链图片转存中…(img-SXBsxKA1-1591757070145)]

你可能感兴趣的:(maven,java,SpringBoot,maven,java)