maven

Maven


1.1 什么是Maven?

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

1.2 Maven能解决什么问题?

1.我们在做工程的时候需要引用各种各样的jar包,大型工程的jar包往往有几十个甚至上百个,用到jar包需要手动引入工程目录,这就会遇到各种jar包冲突、版本冲突等。

2.帮我们编译写好的Java文件(Class文件)、

3.可以一次性将指定单元目录下的代码进行测试,并且汇报代码的正确与错误。

4.帮忙打包项目

1.3 Maven的优势

传统项目的依赖管理:

  • jar包要从网上自己找
  • jar包没有进行统一管理,容易造成jar包重复及版本冲突
  • jar包全部添加到工程中,造成工程过大

**1.依赖管理:**Maven工程对jar包的管理过程。(代码可重用)

传统工程的jar包都在项目中,maven工程的jar包都在jar包仓库中

如果同时有多个maven项目需要调用同一个jar包,那么只用在jar包仓库中占用一份空间。

jar包的坐标在pom.xml文件中

**2.一键构建项目:**编译、测试、运行、打包、安装,整个过程都交给maven进行管理,这个过程叫做构建。

整个构建过程使用maven一个命令可以轻松完成整个工作。


2. Maven的安装

  1. 从maven的官网maven.apache.org下载maven的安装包。

  2. 解压安装包到一个目录,非中文目录。

  3. 配置环境变量。M2_HOME


3.1 Maven常用的命令

maven命令语句
mvn -v 查看maven版本
mvn compile 用来将src/main/java下的文件编译为class文件,并输出到target中。
mvn test test 用来将src/main/test下的文件进行编译,同时执行一次
mvn package 打包,将项目进行打包,如果是jar打包为jar,war打包为war。

mvn clean 删除编译产生的target文件夹
mvn install 安装jar包到本地仓库中

3.2 坐标和仓库

1.坐标

pom.xml中的groupId、artifactId和version都可以构成项目的坐标。

<dependency>
    <groupId></groupId>
    <artifactId></artifactId>
    <version></version>
</dependency>
2.仓库

仓库包含本地和远程仓库,远程仓库的地址可以在Maven安装包中看到。

<repository>
    <id>central</id>
    <name>Central Repository</name>
    <url>https://repo.maven.apache.org/maven2</url>
     <layout>default</layout>
     <snapshots>
         <enabled>false</enabled>
      </snapshots>
</repository>

镜像仓库配置:

<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>

3.2.1 Maven仓库概述

maven仓库用来存储jar包。

maven项目都是从仓库中获取jar包。maven仓库分三种:本地仓库,远程仓库,中央仓库。

**本地仓库:**用来存储从远程仓库及中央仓库下载的jar包,自己来维护。项目使用的jar包优先从本地仓库获取。本地仓库的默认位置在user.home/.m2/repository。user.home/.m2/repository。{user.home}表示用户所在的位置。
**远程仓库:**如果本地仓库没有所需要的jar包,默认去远程仓库下载。远程仓库由公司来进行维护又可称为私服。
**中央仓库:**中央仓库由maven团队来进行维护,服务于整个互联网。其仓库中存储大量的jar包。

**修改本地仓库位置:**本地仓库的配置在settings.xml文件中修改。

3.2.2 三种仓库之间的关系

本地项目需要jar包,先从本地仓库中获取,如果本地仓库中没有,则从私服中获取,如果私服没有,则从中央仓库获取。获取到后,本地仓库及远程仓库各存储一份。如果没有远程仓库,本地仓库则直接从中央仓库获取,然后在本地仓库存储一份。

3.3 maven的生命周期

maven对项目的构建分为三套相互独立的生命周期。
cleanLifecycle:在项目构建前,先进行一些清理工作。
defaultLifecycle:构建的核心部分,编译,测试,打包,部署。
siteLifecycle:生成项目报告,站点,发布报告。

maven的每个生命周期都有很多阶段,每个阶段对应一个执行命令。

clean

**1、clean生命周期:**清理项目,包含三个phase。
1)pre-clean:执行清理前需要完成的工作
2)clean:清理上一次构建生成的文件
3)post-clean:执行清理后需要完成的工作

default

**2、default生命周期:**构建项目,重要的phase如下。
1)validate:验证工程是否正确,所有需要的资源是否可用。
2)compile:编译项目的源代码。
3)test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
4)package:把已编译的代码打包成可发布的格式,比如jar。
5)integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
6)verify:运行所有检查,验证包是否有效且达到质量标准。
7)install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
8)deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。

site

**3、site生命周期:**建立和发布项目站点,phase如下
1)pre-site:生成项目站点之前需要完成的工作
2)site:生成项目站点文档
3)post-site:生成项目站点之后需要完成的工作

3.3.2 命令与生命周期关系

每个maven命令对应生命周期的某一阶段,例如clean命令对应maven的clean阶段。test命令对应maven的default阶段。
执行命令会自动将该阶段以前的命令执行,例如执行clean命令,将自动执行pre-clean命令。
执行某个生命周期某个阶段,不会影响生命周期其他阶段。
如果要执行多个生命周期的命令,中间用空格隔开,例如mvn clean compile。4)site-deploy:将项目站点发布到服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值