Maven学习

目录

需要资料的可以关注私发,分享给你

1. Maven概述和作用

目标

在没有使用maven之前

2. Maven的安装

目标

下载Maven

安装Maven

Maven目录介绍

配置环境变量

测试安装好的Maven

小结

3. Maven仓库的概念和配置(重点)

目录

什么是POM

Maven的仓库概念

仓库分类

访问仓库的过程

配置本地仓库(重点)

小结

4. Maven的坐标(重点)

目标

Maven坐标的概念

坐标的元素定义

坐标的示例

小结

5. 演示:IDEA中配置Maven环境(重点)

目标

IDEA绑定本地Maven服务器

小结

6. 使用Maven骨架创建JavaWeb工程

创建JavaWeb工程

Maven对JavaWeb工程目录结构的要求

手动完善JavaWeb的目录结构

小结

7. 演示:使用插件来创建JavaWeb工程

目标

默认创建结构

idea插件安装

创建Web项目

8. 创建Servlet并部署运行

目标

步骤

发布Web工程

拓展:在线查询jar包依赖的写法

9. Maven的生命周期:概述

目标

生命周期的概念和组成

一个项目生命周期(Project Lifecycle)

maven命令

10. 生命周期命令:clean、compile、test

clean命令

compile命令

test命令

小结

11. 生命周期命令:package,install

目标

package命令

install命令

命令行下执行Maven命令

小结:生命周期的命令

12. 扩展:创建自己的jar包


需要资料的可以关注私发,分享给你

1. Maven概述和作用

目标

  1. 为什么要使用maven

  2. maven有什么作用

在没有使用maven之前

在开发过程中有很多痛苦的开发经历:

maven就是用来解决以上问题的:

1.包的管理和维护

2.统一的项目结

统一的项目生命周期

  1. 包依赖的问题:jar包一般都不是独立存在的,一般一些jar也会用到其他的jar。比如a.jar依赖于b.jar,而b.jar又依赖于c.jar。当你用到a.jar的时候,你需要把3个jar包都加载进来才可以使用。当项目中用到很多jar包的时候,我们很难判断缺少哪些jar包,只有在项目运行过程报错了才知道。

  2. 包版本冲突问题:项目中用到了a.jar,a.jar依赖于c.jar的1.5版本,然后我们把这2个jar拷贝到项目中。后来又用到了b.jar,但是b.jar又依赖于c.jar的1.0版本,此时你把b.jar和c.jar的1.0版本引进来了,会发现c.jar有2个版本,发生冲突了。这种情况你要着手去解决jar包冲突的问题,也是非常痛苦的。

  3. 包的管理不方便:当我们的项目比较大的时候,我们会将一个大的项目分成很多小的项目,每个小项目由几个开发者负责,然后每个小项目都需要把这些jar拷贝一份到自己的项目目录中。                            

  4. 项目开发结构不统一:maven可以让大家都按照某种规范采用同一种项目结构,这样岂不是很方便么?大家按照某种约定,项目使用同样的结构来创建。

  5. 项目的生命周期控制方式五花八门:开发者除了编码之外,大多数时间都是在编译、打包、发布到测试环境,多数时间都在重复着跑单元测试、编译、打包、发布的工作。在没有自动化编译的时候,每个过程都需要我们手动去操作。

2. Maven的安装

目标

下载和安装maven

配置环境变量

下载Maven

安装Maven

直接解压到任意目录,在预习资料中已经提供了安装包

1.不要有汉字的目录

2.不要有空格

3.目录层次不要太深

Maven目录介绍

目录名功能说明
bin可执行文件的目录,其中mvn.cmd这是它的启动命令
boot第三方的类加载器
conf配置文件所在的目录,其中settings.xml是它的核心配置文件 如果这个文件配置有错误,会导致maven项目有问题。
libmaven所依赖的jar包和一些插件

配置环境变量

1) 我的电脑右键,选择属性

2) 左上角选择"高级系统设置"

3) 选择高级下面的"环境变量"的按钮

4) 添加Maven的主目录为你的安装目录,设置Maven的可执行文件访问路径为Maven主目录的bin目录下

MAVEN_HOME=e:\apache-maven-3.5.2
Path=%MAVEN_HOME%\bin

 

测试安装好的Maven

出现如下提示信息表示配置成功:

小结

maven的安装要配置哪2个环境变量

 1. MAVEN_HOME=安装目录
 2. Path=%MAVEN_HOME%\bin

3. Maven仓库的概念和配置(重点)

目录

什么是POM

三种仓库的特点

配置本地仓库

什么是POM

使用maven创建的项目,每个项目都有一个pom.xml配置文件,这是maven项目的配置文件。

POM的全称:Project Object Model 项目对象模型,按面向对象的思想来管理整个项目

在pom.xml文件中包含以下内容:

当前模块或项目的坐标

项目依赖了哪些jar包(常用)

  • 项目使用了哪些插件等

Maven的仓库概念

项目所有的jar包都从仓库中去下载,仓库就是存放jar包的地方

仓库分类

本地仓库

相当于缓存,工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在本地电脑上)。以后不需要从远程仓库去下载,先从本地仓库找,如果找不到才去远程仓库找。

远程仓库

中央仓库

仓库中的jar包由专业团队(maven团队)统一维护,有全球最完整,最通用的jar包。Central Repository:

私服

在公司内部架设jar包的私有服务器,中央仓库中存放的是通用的jar包。公司自己开发的jar包可以放在公司内部的私服中供企业内部使用,私服仓库中也包含了大量中央仓库的jar包。访问私服仓库比访问中央仓库速度更快,更稳定。

第三方公共库

由大型公司搭建的服务器供大家使用的jar包服务器,例如:阿里云仓库 仓库服务

访问仓库的过程

配置本地仓库(重点)

1) 将本地仓库文件夹中的repository.zip解压,可以放在任意的位置,这是老师提供的本地仓库。

 e:\maven\repository

2) 配置本地仓库,修改maven的安装目录中conf/settings.xml文件,在53行配置本地仓库为上面的目录。

 <localRepository>e:\maven\repository</localRepository>

3) 修改settings.xml文件,146行的下一级元素,指定中央仓库的镜像。这里使用的是阿里云的中央仓库,速度比官方的快很多。注:在mirrors下面

<mirror>  
	<id>nexus-aliyun</id>  
	<mirrorOf>*</mirrorOf>    
	<url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror>

4) 修改maven使用JDK的版本,187行。如果不配置就需要在idea中配置。maven默认使用的是JDK1.5的版本,这里使用1.8的版本。注:在profiles下面

<profile>    
    <id>jdk-1.8</id>    
    <activation>    
        <activeByDefault>true</activeByDefault>    
        <jdk>1.8</jdk>    
    </activation>    
    <properties>    
	  	<maven.compiler.source>1.8</maven.compiler.source>    
		<maven.compiler.target>1.8</maven.compiler.target>    
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>    
    </properties>    
</profile>

5) 保存文件

小结

  1. 有哪2种仓库

     本地仓库
     远程仓库:中央仓库,私服,第三方公共库(阿里云)

  2. settings.xml中需要配置哪些内容?

     1. 本地仓库的目录
     2. 修改远程仓库的地址
     3. 修改JDK版本为1.8

4. Maven的坐标(重点)

目标

坐标的作用

定义坐标有哪些元素

Maven坐标的概念

每个jar包在仓库中都有一个唯一标识,这就是坐标,由以下三个元素组成

坐标的元素定义

命名规范:

元素名称说明
groupId表示一级或多级目录
artifactId表示下一级目录
version表示下一级目录

坐标的示例

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

可以通过官方的中央仓库地址:http://repo1.maven.org/maven2/

通过以上三层结构就可以在仓库里面定位到一个jar包,坐标的每个组成部分都对应仓库里面的一级目录结构。如果之前已经访问过,则在本地仓库中也可以找到。`

有一些groupId项目名字对应两级目录,而artifactId和version元素都对应一级目录

小结

定义坐标有哪几个元素

 groupId:对应一级或多级(组织或公司名字)
 artifactId:对应一级 (项目或模块名字)
 version:对应一级 (版本号)

5. 演示:IDEA中配置Maven环境(重点)

目标

在idea中配置maven的环境

IDEA绑定本地Maven服务器

1) 选择File--> Settings (配置当前的项目) ,这个配置只影响当前项目。但以后新创建的工程还需要重新配置。

而选择File-->Other Settings (配置以后新创建的项目) ,则是影响以后新创建的项目。

2020版

 2019版

 2) 选择Build,Execution,Deployment-->Build Tools-->Maven

 3) 配置以下三项信息:Maven的主目录,配置文件settings.xml和本地仓库repository目录

 4) 选择Build,Execution,Deployment-->Build Tools -->Maven-->Runner,设置Maven启动虚拟机的选项:VMOption,设置所有资源先从本地仓库查找,如果本地仓库中没有才去互联网找。

-DarchetypeCatalog=internal

5)   可选,如果汉字没有乱码则不用设置,Maven控制台输出中文如果出现乱码,则进行如下设置。

VMoptions: -Dfile.encoding=GBK  或者 -Dfile.encoding=UTF-8

 

VMOptions配置多个参数需要使用空格隔开

小结

在idea中配置maven环境需要指定哪些选项?

  1. 指定安装目录

  2. 指定settings.xml

  3. 本地仓库位置

6. 使用Maven骨架创建JavaWeb工程

创建JavaWeb工程

1) 选择Maven骨架时,要选择maven-archetype-webapp,注:不要选成cocoon-22-archetype-webapp。

 

2) 将模块添加到哪个项目,指定其父模块,设置为none。指定项目的坐标。 (2020版)

 

3) 确认Web的骨架信息,检查是否正确

 

 5) 默认骨架创建好的JavaWeb工程如下,选右边的Maven Projects中的刷新。

 6) 左边的webapp图标上出现蓝色小点。表示这是Web页面的根目录,类似于以前的web目录。

 

Maven对JavaWeb工程目录结构的要求

 

手动完善JavaWeb的目录结构

1) 手动在main目录下创建java目录和resources,如图

 2) 在src目录下,与main目录同级,创建test目录,并在test目录下创建java文件夹和resources,如图

 3) 在右边的Maven Projects刷新,左边的工程各个文件夹的图标都发生变化

 4) 最终目录结构,如图红色方框中的文件夹都是手动创建的。

 

小结

相对JavaSE结构,Web的结构只是在main目录下多了一个webapp目录。这个目录是放网页的地方。

7. 演示:使用插件来创建JavaWeb工程

目标

  1. 插件的安装

  2. 使用插件创建Web工程

默认创建结构

 

需要将一个Java工程转成Web工程

idea插件安装

  1. 打开idea开发工具,如图安装插件

2.选中插件的zip包文件,注:不要解压缩

 

3.安装好以后,会提示重启idea开发工具

4.重启以后就安装好了

 

创建Web项目

  1. 创建maven模块

     

  2. 创建工程坐标,注:Location的位置,不要创建到了上一个模块的下面。注:以下截图是2020版的。

     

  3. 创建出来的是一个普通的工程,不是一个web项目

     

  4. 使用插件把普通的Java工程转换为web项目

  5. 出现如下中文提示

     

  6. 转换后的项目如下图,webapp下放网页和JS等静态内容。如果webapp上没有蓝色小点,就点右边的刷新按钮

 

8. 创建Servlet并部署运行

目标

创建Servlet并且运行

步骤

1) 打包的类型已经自动设置成了war

<packaging>war</packaging>

2) 在pom.xml加入依赖Servlet的依赖,artifactId设置为javax.servlet-api,选择3.1.0的版本,指定scope为provided  

<?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.itheima</groupId>
    <artifactId>day35_01_Web</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--
    打包类型:
     1. war web工程打包格式
     2. jar java工程打包格式
     -->
    <packaging>war</packaging>

    <!--所有依赖包,写在dependencies-->
    <dependencies>
        <!--每个依赖包写在dependency-->
        <dependency>
            <!--servlet坐标-->
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <!--依赖范围-->
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

 3) 刷新maven project窗口,导入Servlet 3.1.0的依赖包。

 

 4) 如果没有导入jar包,可以在事件日志中设置为自动导入

 

 

5) 创建Servlet,注:要勾选使用注解的方式。

注:如果webapp文件夹上如果没有蓝色小点,则在上面右键是不能选择Servlet的。

 

 目录结构

 

发布Web工程

1) 点上面的执行工具栏,编辑运行配置

 

 2) 点Deployment,删除原有的项目,添加一个新的Artifact

 

3) 选择两个都可以,区别是:exploded是未打包成war的文件夹,访问速度更快一点,适合于开发阶段。

4) Application context的访问地址可以不变,设置成/

 

 5) Server标签页的设置,这里默认的端口号是8080

 6) 注意Tomcat默认访问的是index.jsp,要输入地址访问demo1

 

拓展:在线查询jar包依赖的写法

在maven中只需要导入依赖坐标,无需手动导入jar包就可以引入jar。在pom.xml中使用<dependency>标签引入依赖。如果pom模板中没有配置过的依赖,可以通过https://mvnrepository.com/在线搜索坐标写法。

1) 输入网址,在文本框中输入要查找的包名,如:servlet

 2) 找到相应的结果,选择使用最多的

 3) 点进去以后,选择相应的Servlet版本,如:3.1.0

 

 4) 将相应的Maven依赖文本复制过来即可,只要点击文本就会自动复制,以后你按ctrl+v粘贴就可以了

 注:以后开发项目,通常pom.xml中所有的依赖包的坐标都会提供。

9. Maven的生命周期:概述

目标

了解maven的生命周期

生命周期的概念和组成

maven对项目构建过程分为三套相互独立的生命周期

分别是:

  1. Clean Lifecycle 在进行真正的构建之前进行一些清理工作。

  2. Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。

  3. Site Lifecycle 生成项目报告,站点,发布站点。

一个项目生命周期(Project Lifecycle)

使用maven完成项目的构建,项目构建包括:清理、编译、测试、部署等过程,maven将这些过程规范为一个生命 周期,如下所示是生命周期的各阶段:

 

 

maven命令

maven通过执行一些简单命令即可实现上边生命周期的各个过程,比如执行mvn compile执行编译、执行mvn clean 执行清理。

 

 

10. 生命周期命令:clean、compile、test

以下所有的操作针对第1个通过向导创建的Web项目

clean命令

命令作用

清除target目录,target是字节码文件和项目发布的目录。用clean可以清除缓存。

 

也可以在命令行下执行:mvn clean

操作演示

1) 选择day39_02_Web项目,可以看到target文件夹

2) 双击右边的Maven Projects-->Lifecycle-->clean执行清除操作

 

3) 操作结果如下

 4) 可以看到删除了target目录。

 5) 也可以选择Execute Maven Goal选择clean命令执行,注意选择正确的路径。这种方式主要用于命令带参数的情况。

 

compile命令

命令作用

 

编译main目录,不会编译test目录

操作演示

1) 选择day39_02_Web项目,删除target中classes目录下和test-classes目录下所有的文件,不删除目录。

 2) 双击compile命令执行

 3) 在Run下查看结果

 4) 只编译了java中的代码,test-classes中的代码没有编译。

 

test命令

命令作用

执行test目录下的测试类和方法
1. 需要导入Junit包
2. 汉字可能会有乱码,因为maven默认是使用GBK编码,如果有乱码不用理会。
3. 通常在junit中直接执行不会出现乱码

操作演示

1) 确认JUnit已经导入

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

2) 在src/test/java下创建测试类AppTest

3) 执行test命令测试,双击或输入运行的test命令

4) 在Run查看测试结果

 

小结

  1. clean:删除target目录

  2. compile:编译main目录

  3. test:执行test目录下所有的测试类和方法

 

11. 生命周期命令:package,install

目标

  1. 学习使用package和install命令

  2. 在命令行方式下使用生命周期的命令

package命令

命令作用

如果是java项目,打包成jar
如果是web项目,打包成war
将项目打包到target目录下

 

操作演示

1) 确认在Web项目中已经设置了打包的方式

<packaging>war</packaging>

2) 双击package或者输入命令执行

 3) 在Run查看日志输出结果。注:每次打包前还会再次执行所有test命令

 4) 在target或windows目录下都可以看到生成的war文件

 

install命令

命令作用

 将工程安装到本地仓库

 

操作演示

1) 双击install或者输入命令,执行安装命令

 

 2) 执行以后在Run窗口看到如下信息

 3) 安装完毕后,在本地仓库中可以找到当前项目创建的war包信息

 4) 可以将war复制到tomcat/webapps目录下

5) 通过浏览器访问

 

 

命令行下执行Maven命令

操作演示:

1) 打开命令提示符窗口

 2) 运行命令之前,必须进入项目所在的根目录,可以看到pom.xml所在的目录

 3) 执行Maven的清除命令:mvn clean\

 4) 查看执行结果,发现target文件夹已经没有

 

小结:生命周期的命令

命令说明
mvn clean删除target目录
mvn compile编译main目录
mvn test执行test目录
mvn package打包到target目录下
mvn install安装到本地仓库中

12. 扩展:创建自己的jar包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值