avatar

目录
【项目管理利器——maven】笔记

以下内容笔记来自慕课网视频《项目管理利器——maven》
笔记参考:https://blog.csdn.net/qq_33547950/article/details/51865451

[toc]

第一章 课程概y述

第二章 maven快速入门

2-1 maven介绍及环境搭建

  • maven介绍

    Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

  • 环境搭建

    1.下载maven并解压

    http://maven.apache.org/download.cgi.apache-maven-3.5.2-bin.zip

    2.maven目录结构

    bin:包含mvn的运行脚本,其中m2.conf是配置文件
    boot:包含一个类加载器的框架,maven使用它来加载自己的类库。
    conf:配置文件目录,经常用到的settings.xml。

    3.配置环境变量

    (1)新建系统变量,变量名M2_HOME,变量值指向maven的安装目录xx\maven。
    (2)修改Path,在变量值中添加%M2_HOME%\bin。
    (3)验证是否配置成功,打开命令行界面,输入mvn -v,可以通过此命令查看maven的版本号、java的版本号,以及系统的一些信息。

2-2 第一个maven案例helloword

  • maven项目的目录结构

    Src.main.java.(package)
    项目源代码
    Src.test.java.(package)
    项目的测试文件
    src.resource
    存放资源文件的目录

  • 创建代码文件

HelloWorld.java(保存在maven01\src\main\java\包名)

Code
1
2
3
4
5
6
package com.imooc.maven01.model;
public class HelloWorld {
public String sayHello(){
return "Hello World!";
}
}

HelloWorldTest.java(保存在maven01\src\test\java\包名)

Code
1
2
3
4
5
6
7
8
9
package com.imooc.maven01.model;
import org.junit.*;
import org.junit.Assert.*;
public class HelloWorldTest{
@Test
public void testHello(){
Assert.assertEquals("Hello World!",new HelloWorld);
}
}

pom.xml(保存在项目根目录中)

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--项目包名-->
<groupId>com.imooc.maven01</groupId>
<!--项目模块名-->
<artifactId>maven01-model</artifactId>
<version>0.0.1-SNAPSHOT</version>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
</project>
  • 编译项目

(1)在命令行界面进入项目根目录执行命令mvn compile,显示BUILD SUCCESS表示编译成功。
(2)输入mvn test测试命令,
(3)在项目根目录下会自动生成target文件夹,其中classes文件夹存放编译后的二进制.class文件,surefire-reports文件夹存放测试报告 。
(4)在命令行界面,项目根目录下,输入mvn package,会在target文件夹中生成项目的jar包。

第三章 maven核心知识

3-1 常用的构建命令

命令 说明
mvn -v 查看maven版本
mvn compile 编译
mvn test 测试
mvn package 打包
mvn clean 删除target文件夹
mvn install 安装jar包到本地仓库中

3-2 自动建立目录骨架

archetype插件

(1)archetype插件用于创建符合maven规定的目录骨架

archetype插件的两种使用方式

(1)命令行界面进入项目根目录,输入mvn archetype:generate命令,根据提示依次输入maven-archetype的版本、groupId、arctifactId、version、package。

(2)或者一次输入所有参数,egmvn archetype:generate -DgroupId:项目包名 -DarctifactId:项目模块名 -Dversion:版本号 -Dpackage:模块包名,根据提示选择maven-archetype版本以及参数的确认。

3-3 maven中的坐标和仓库

maven的坐标

(1)在maven中,任何一个依赖、插件、项目构建的输出等都可以被称为构件。所有构建均通过坐标作为其唯一的标识。
(2)标签groupId、artifactId、version标签就是maven项目的基本坐标。

maven的仓库

maven的仓库用来管理项目的依赖,仓库又分为两种本地仓库和远程仓库。查找项目所需依赖时,先查找本地仓库,再查找远程仓库。

查看maven默认的全球仓库地址

打开maven目录 => bin>maven-model-builder.jar>org\apache\maven\model\pom.xml(ps:maven提供的超级pom,所有maven项目都会继承这个pom) => repository标签下的url标签。

http://search.maven.org/

设置镜像仓库

打开maven目录\conf\settings.xml => 找到mirrors标签,输入以下代码:

Code
1
2
3
4
5
6
<mirror>
<id>maven.net.cn</id>
<mirrorOf>central</mirrorOf>
<name>central mirror in china</name>
<url>http://maven.net.cn/content/groups/public</url>
</mirror>

设置镜像仓库后,中央仓库将无法访问

阿里镜像仓库:

Code
1
2
3
4
5
6
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

设置镜像仓库后,中央仓库将无法访问

更改本地仓库位置

(1)maven默认的本地仓库地址:c:\user\用户.m2\repository
(2)打开settings.xml => 找到localRepository标签 => 输入设置的本地仓库地址,注意:路径文件夹的分隔符要使用“/”。

E:/A2018/2_Maven_learn/repo

复制一份setting.xml到本地仓库:

原因:
1)IDE会找本地仓库里的setting.xml
2)重装maven时,也不用修改配置

3-4 在eclipse中安装maven插件以及创建maven项目

安装maven插件

(1)eclipse4.0及以上版本自带maven插件,无需额外安装。

创建maven项目

New => Maven => Maven Project =>2*next => 选择maven的目录模板quickstart模板 => next => 输入项目坐标 => finish

运行maven项目

eclipse的项目目录下pom.xml右键 => Run As => Maven Build => 在Goals文本框输入compile命令 =>run

3-5 maven的生命周期

完整的项目构建过程

清理、编译、测试、打包、集成测试、验证、布署

maven项目的生命周期

maven包括三套独立的生命周期,clean(清理项目)、default(构建项目)、site(生成项目站点)。每个生命周期又包含一些阶段,各个生命周期的阶段是有顺序的,且后面的阶段依赖于前面的阶段,执行某个阶段时其前面的阶段会依次顺序执行,但不会触发另外两套生命周期的任何阶段。

clean的阶段

阶段 说明
pre-clean 执行清理前的工作
clean 清理上一次构建生成的所有文件
post-clean 执行清理后的文件

default的阶段

default的阶段比较多,常用的阶段有compile、test、package、install

site的阶段

阶段 说明
pre-site 在生成项目站点前要完成的工作
site 生成项目的站点文档
post-site 在生成项目站点后要完成的工作
site-deploy 发布生成的站点到服务器上

使用maven的第三方插件

3-6 pom.xml解析

pom.xml是maven项目的核心管理文件,用于项目描述、组织管理、依赖管理和构件信息的管理。

pom.xml的常用标签

pom的重要标签(1)

pom的重要标签(2)

pom的其他标签

3-7 依赖范围

scope标签指定依赖的范围,当前项目如果要使用某一个框架,就要把该框架的jar包引入到classpath路径中,这样项目就能使用该框架的方法。maven中提供了三种classpath,分别是编译、测试、运行。依赖的范围就是控制依赖与三种classpath的关系。

scope的六种属性

属性值 说明
compile 默认的范围,编译、测试、运行都有效
provided 在编译和测试时有效
runtime 在测试和运行时有效
test 只在测试时有效
system 在编译、测试有效,但是与本机系统相关联,可移植性差
import 导入的范围,它只使用在dependencyManagement中,表示从其它的pom中导入dependecy的配置

3-8 依赖传递

依赖的传递,指当A依赖B,B依赖C,则A依赖C。

排除传递的依赖

使用exclusions标签

Code
1
2
3
4
5
6
7
8
<dependency>
<坐标>需要依赖项目的坐标</坐标>
<exclusions>
<exclusion>
<坐标>需要排除的依赖项目的坐标</坐标>
</exclusion>
</exclusions>
</dependency>

3-9 依赖冲突

依赖冲突,指有A和B分别依赖于C的不同版本。当D同时依赖于A和B时,则D对传递的依赖C的实际版本是哪一个,需要规则去约定。

规则 说明
短路优先 即优先选择传递依赖路径最短的版本
先声明先优先 在传递依赖路径长短相同时,先声明的依赖路径先选择

3-10 聚合和继承

聚合:将多个项目一起进行install命令,安装到本地仓库中的方法叫聚合
步骤:新建maven项目 => 将pom.xml中的packaging标签内容修改为”pom” => 在pom.xml中加入如下代码:

Code
1
2
3
4
5
6
7
8
<modules>
<module>项目的路径</module>
<module>项目的路径</module>
<module>项目的路径</module>
<!--
...
-->
</modules>

继承:多个maven项目需要依赖同一个框架或maven项目。
步骤
(1)新建maven项目 => 将pom.xml中的packaging标签内容修改为”pom” => 在pom.xml中加入如下代码:

Code
1
2
3
4
5
6
7
<dependencyManagement>
<dependencies>
<dependency>
<坐标>被依赖的项目坐标</坐标>
</dependency>
</dependencies>
</dependencyManagement>

(2)在需要继承的项目pom.xml中,加入

Code
1
2
3
<parent>
<坐标>需要被继承的项目</坐标>
</parent>

第四章 如何构建web项目

4-1 使用maven构建web项目

  1. 用eclipse新建maven项目
  2. 在maven中央仓库http://mvnrepository.com中查找servlet坐标,并添加到项目pom.xml文件中
文章作者: Machine
文章链接: https://machine4869.gitee.io/2018/04/18/15326632899731/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 哑舍
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论