javaEE学习笔记————maven基础总结!!

文章目录

    • 1.maven介绍
      • 1.1 什么是maven
        • 1.1.1 定义
        • 1.1.2 maven可以解决的问题
        • 1.1.3 Maven 的优势举例
      • 1.2 Maven 的两个精典作用
        • 1.2.1 依赖管理
        • 1.2.2 项目的一键构建
    • 2.maven的使用
      • 2.1 maven的安装
        • 2.1.1 Maven 软件的下载
        • 2.1.2 Maven 软件的安装
        • 2.1.3 jdk的准备
        • 2.1.4 Maven 及 JDK 配置
        • 2.1.5 Maven 软件版本测试
      • 2.2 maven仓库
        • 2.2.1 Maven 仓库的分类
        • 2.2.2 Maven 本地仓库的配置
      • 2.3 maven工程的认识
        • 2.3.1 Maven 工程的目录结构
        • 2.3.2 Maven 工程的运行
        • 2.3.3 maven下的ali镜像配置
    • 3. maven 的项目实践
      • 3.1 maven常用命令
      • 3.2 maven 指令的生命周期
      • 3.3 maven 的概念模型
      • 3.4 idea开发的maven项目
        • 3.4.1 idea的maven配置
        • 3.4.2 idea 中创建一个 maven 的 web 工程
        • 3.4.3 idea中具体的操作
        • 3.4.4 设置jdk 的版本
        • 3.4.5 添加servlet7插件
        • 3.4.6 编写servlet
        • 3.4.7 编写servlet
        • 3.4.8 运行

1.maven介绍

1.1 什么是maven

1.1.1 定义

Maven 在美国是一个口语化的词语,代表专家、内行的意思
一个对 Maven 比较正式的定义是这么说的:Maven 是一个项目管理工具,它包含了一个项目对象模
型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管
理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)

1.1.2 maven可以解决的问题

我们来简单的举几个例子:
1 .平时不管写什么项目都免不了要导入各种的jar包,有了maven就可以帮你自动的导入
2 .平时检测某个功能都会用到单元测试,但是当有很多的功能的时候你还要一个个的去测试吗?显然浪费时间,maven就可以帮你集中的测试
3 .maven中有一个pom.xml的配置文件可以将所有的配置都写到这一个文件中,方便进行管理
4.如果一个项目很大的话,将会导致集中的依赖包也会很多,最终会导致整个项目过于庞大,而用了maven可以极大地缩小项目的体积
5.其他

1.1.3 Maven 的优势举例

在前面学习到的web项目开发的过程中,要能够将项目运行起来,就必须将该项目所依赖的一些 jar 包添加到
工程中,否则项目就不能运行。试想如果具有相同架构的项目有十个,那么我们就需要将这一份 jar
包复制到十个不同的工程中。我们一起来看一个 CRM项目的工程大小。
使用传统 Web 项目构建的 CRM 项目如下:

javaEE学习笔记————maven基础总结!!_第1张图片

	原因主要是因为上面的 WEB 程序要运行,我们必须将项目运行所需的 Jar 包复制到工程目录中,从
	而导致了工程很大。
	同样的项目,如果我们使用 Maven 工程来构建,会发现总体上工程的大小会少很多。如下图:

javaEE学习笔记————maven基础总结!!_第2张图片

1.2 Maven 的两个精典作用

1.2.1 依赖管理

Maven 的一个核心特性就是依赖管理。当我们涉及到多模块的项目(包含成百个模块或者子项目),管理依赖就变成
一项困难的任务。Maven 展示出了它对处理这种情形的高度控制。

javaEE学习笔记————maven基础总结!!_第3张图片

	通过分析发现:maven 工程中不直接将 jar 包导入到工程中,而是通过在 pom.xml 文件中添加所需 jar
	包的坐标,这样就很好的避免了 jar 直接引入进来,在需要用到 jar 包的时候,只要查找 pom.xml 文
	件,再通过 pom.xml 文件中的坐标,到一个专门用于”存放 jar 包的仓库”(maven 仓库)中根据坐标从
	而找到这些 jar 包,再把这些 jar 包拿去运行。
	那么问题来了
	第一:”存放 jar 包的仓库”长什么样?
	第二:通过读取 pom.xml 文件中的坐标,再到仓库中找到 jar 包,会不会很慢?从而导致这种方式
	不可行!
	
	第一个问题:存放 jar 包的仓库长什么样,这一点我们后期会分析仓库的分类,也会带大家去看我们
	的本地的仓库长什么样。
	第二个问题:通过 pom.xml 文件配置要引入的 jar 包的坐标,再读取坐标并到仓库中加载 jar 包,这
	样我们就可以直接使用 jar 包了,为了解决这个过程中速度慢的问题,maven 中也有索引的概念,通
	过建立索引,可以大大提高加载 jar 包的速度,使得我们认为 jar 包基本跟放在本地的工程文件中再
	读取出来的速度是一样的。这个过程就好比我们查阅字典时,为了能够加快查找到内容,书前面的
	目录就好比是索引,有了这个目录我们就可以方便找到内容了,一样的在 maven 仓库中有了索引我
	们就可以认为可以快速找到 jar 包。

1.2.2 项目的一键构建

	我们的项目,往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程。
	什么是构建?
	指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个
	过程称为构建。
	一键构建
	指的是整个构建过程,使用 maven 一个命令可以轻松完成整个工作。

Maven 规范化构建流程如下:

javaEE学习笔记————maven基础总结!!_第4张图片

2.maven的使用

2.1 maven的安装

2.1.1 Maven 软件的下载

大家可以直接去官网下载:

maven官网
javaEE学习笔记————maven基础总结!!_第5张图片

2.1.2 Maven 软件的安装

将下载好的压缩包解压到没有中文和空格的路径下:(我直接解压到了G盘的根目录)

在这里插入图片描述

解压好的文件目录如下:

javaEE学习笔记————maven基础总结!!_第6张图片

bin:存放了 maven 的命令,比如我们前面用到的 mvn tomcat:run
boot:存放了一些 maven 本身的引导程序,如类加载器等
conf:存放了 maven 的一些配置文件,如 setting.xml 文件
lib:存放了 maven 本身运行所需的一些 jar 包
至此我们的 maven 软件就可以使用了,前提是你的电脑上之前已经安装并配置好了 JDK。

2.1.3 jdk的准备

我使用的jdk8,一般学习java的都有的我就不多说了.有问题私聊

2.1.4 Maven 及 JDK 配置

配置 MAVEN_HOME ,变量值就是你的 maven 安装 的路径(bin 目录之前一级目录)

javaEE学习笔记————maven基础总结!!_第7张图片

	配置path:%MAVEN_HOME%\bin

在这里插入图片描述

2.1.5 Maven 软件版本测试

打开cmd运行mvn -v

javaEE学习笔记————maven基础总结!!_第8张图片

2.2 maven仓库

2.2.1 Maven 仓库的分类

maven 中仓库的类型:

javaEE学习笔记————maven基础总结!!_第9张图片

本地仓库 :用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,
优先从本地仓库查找
默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示 windows 用户目录。	

我的maven仓库:(我放到了maven里面,方面以后拿走用)

下面的那个del_lsatupdate.bat是用来删除后缀为lastupdate 的文件的,一般遇到这种情况都是下载依赖失败的

在这里插入图片描述

远程仓库:如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。
远程仓库可以在互联网内也可以在局域网内。

中央仓库 :在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中
央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包
含了世界上大部分流行的开源项目构件。

2.2.2 Maven 本地仓库的配置

找到maven目录下的conf目录下的setting.xml

javaEE学习笔记————maven基础总结!!_第10张图片
在红色方框的位置写上你自己的仓库目录
javaEE学习笔记————maven基础总结!!_第11张图片

2.3 maven工程的认识

2.3.1 Maven 工程的目录结构

javaEE学习笔记————maven基础总结!!_第12张图片

作为一个 maven 工程,它的 src 目录和 pom.xml 是必备的。
进入 src 目录后,我们发现它里面的目录结构如下:

javaEE学习笔记————maven基础总结!!_第13张图片

src/main/java —— 存放项目的.java 文件
src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件
src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类
src/test/resources —— 测试资源文件
target —— 项目输出位置,编译后的 class 文件会输出到此目录
pom.xml——maven 项目核心配置文件
注意:如果是普通的 java 项目,那么就没有 webapp 目录。

2.3.2 Maven 工程的运行

进入 maven 工程目录(当前目录有 pom.xml 文件),运行 tomcat:run 命令。

javaEE学习笔记————maven基础总结!!_第14张图片
根据上边的提示信息,通过浏览器访问:http://localhost:8080/maven-web003/
javaEE学习笔记————maven基础总结!!_第15张图片

2.3.3 maven下的ali镜像配置

网上有各种各样样的版本,我也试了很多个,我现在用的这个:
找到setting.xml:在mirros下输入以下的内容
	
		nexus-aliyun
		central
		Nexus aliyun
		http://maven.aliyun.com/nexus/content/repositories/central
	

javaEE学习笔记————maven基础总结!!_第16张图片

3. maven 的项目实践

3.1 maven常用命令

 compile:查看 target 目录,生成class 文件,编译。
 test :maven 工程的测试命令 mvn test,会执行 src/test/java 下的单元测试类
 clean :maven 工程的清理命令,执行 clean 会删除 target 目录及内容。
 package :maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war包。
 install : maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。

3.2 maven 指令的生命周期

maven 对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,
这三套生命周期分别是:

javaEE学习笔记————maven基础总结!!_第17张图片

Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
Site Lifecycle 生成项目报告,站点,发布站点。	

3.3 maven 的概念模型

Maven 包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project 
Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段
(phase)中插件(plugin)目标(goal)的逻辑。

javaEE学习笔记————maven基础总结!!_第18张图片

3.4 idea开发的maven项目

3.4.1 idea的maven配置

javaEE学习笔记————maven基础总结!!_第19张图片

3.4.2 idea 中创建一个 maven 的 web 工程

点击create new project
javaEE学习笔记————maven基础总结!!_第20张图片
选择 idea 提供好的 maven 的web 工程模板
javaEE学习笔记————maven基础总结!!_第21张图片
点击next
javaEE学习笔记————maven基础总结!!_第22张图片
点击next
javaEE学习笔记————maven基础总结!!_第23张图片
直接next

javaEE学习笔记————maven基础总结!!_第24张图片

点击finsh

3.4.3 idea中具体的操作

首先大家新建如下的文件夹,具体的包的名称,大家按照自己的来

javaEE学习笔记————maven基础总结!!_第25张图片
在新建一个servlert 的过程中大家没有办法通过单击右键找到servlet,我们需要导入依赖

	
	      javax.servlet
	      servlet-api
	      2.5
	      provided
	    
	    
	      javax.servlet.jsp
	      jsp-api
	      2.0
	      provided
		
		
		      junit
		      junit
		      4.12
		      test
    	

然后就可以创建一个servlet 文件,至于servlet 的配置大家自己配置好

3.4.4 设置jdk 的版本

 
    org.apache.maven.plugins
    maven-compiler-plugin
    
      1.8
      1.8
      UTF-8
    
  

3.4.5 添加servlet7插件

  
    org.apache.tomcat.maven
    tomcat7-maven-plugin
    2.2
    
      8080
    
  

3.4.6 编写servlet

public class MyServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getRequestDispatcher("hello.jsp").forward(request,response);
    }
}

3.4.7 编写servlet

<%--
  Created by IntelliJ IDEA.
  User: Belief
  Date: 2020/6/11
  Time: 11:19
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Titletitle>
head>
<body>
hello maven
body>
html>

3.4.8 运行

javaEE学习笔记————maven基础总结!!_第26张图片
运行tomcat7:run
javaEE学习笔记————maven基础总结!!_第27张图片

javaEE学习笔记————maven基础总结!!_第28张图片

你可能感兴趣的:(java)