maven工作2017届西安思沃大讲堂

Maven指南(一) - 两小时从零到了解

2017-01-17  本文已影响1700人  司鑫
目录导航,方便大家选择性查看

1 Maven 介绍


是什么

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

约定优于配置

约定优于配置是一个简单的概念,系统、类库、框架给定一个合理的默认值。Maven通过给项目提供默认行为来融合这一概念,在没有自定义的情况下

Maven和Ant的区别

Apache Ant

Apache Maven

2 Maven 安装


Maven安装

安装自行解决😁,有问题下方留言

安装及环境变量设置成功显示

环境变量设置成功

Maven目录及配置说明

我们先打开安装好的 Maven目录看看。

maven 目录

其中:

接着我们再来看看本地的 Maven 仓库,进入~/.m2目录

本地 maven 仓库

其中:

3 第一个demo


当我们把maven环境搭建好之后,我们来创建一个maven项目。

1) 创建 maven 项目

mvn archetype:create 
                -DgroupId=org.sonatype.mavenbook.ch03 //项目id
                -DartifactId=demo //项目名
                -DpackageName=com.acey.demo  //包的目录结构

注意

mvn archetype:generate
                -DgroupId=org.sonatype.mavenbook.ch03 //项目id
                -DartifactId=demo //项目名
                -DpackageName=com.acey.demo  //包的目录结构
                -DarchetypeCatalog=internal

一切顺利的话,我们便可以在当前目录下找到我们创建的 maven 项目了,打开后可以看到项目的目录结构。


demo 目录结构

2)mvn install

在项目跟路经下执行 mvn install命令

mvn install
install 步骤

可以先看下整个执行步骤,详情会在后面的 maven 生命周期中详细介绍。

3)运行

java -cp target/demo-1.0-SNAPSHOT.jar com.acey.demo.App
结果

4 核心概念


1)Maven 插件和目标(Plugins and Goals)

一个 Maven 插件(plugin)是一个或多个目标(goal)的集合。而一个目标是 Maven 中的一个工作单元(unit of work),他可以作为以个单独的目标运行,也可以作为一个大的构建的一部分和其它目标一起运行。用以下格式表示:

pluginId:goalId

在我们构建 Maven 项目时,我们便用到了archetype插件和generate目标。当然目标也是可以定义一些参数。

mvn archetype(插件):generate(目标)
                -DgroupId=org.sonatype.mavenbook.ch03 //目标参数
                -DartifactId=demo //目标参数
                -DpackageName=com.acey.demo  //目标参数
                -DarchetypeCatalog=internal //目标参数

2)生命周期(Lifecycle)

Maven有三套相互独立的生命周期

其中:
Default Lifecycle包含了一系列阶段的序列。

一系列阶段的序列

插件目标也是可以附着在生命周期上的,它会随着生命周期的移动,执行附着在不同生命周期上的目标。每个阶段上附着的零个或多个目标。例如:放我们执行 mvn package时,我们会发现它会默认的执行该生命周期前的生命周期所对应的目标,当达到目标生命周期(package)时,会执行附着在package上的jar:jar进行打包。

mvn package

我们再来看看每个周期所对应的目标

周期对应目标

mvn package 会自动执行它前面周期所对应的目标,然后打包
mvn jar:jar 只会打包


Clean Lifecycle一共包含三个阶段


Site Lifecycle一共包含了四个阶段

当我们执行mvn site后,我们会发现我们的 target 目录下会生成一个 site 目录,里面包含了项目的各种报告。

mvn site

3)Maven 坐标(Coordinates)

Maven坐标定义了一组标识,它可以用来唯一标识一个项目,一个依赖,或者是一个POM里面的插件。我们先来看一个简单的POM。

pom

其中 groupIdartfiactIdversionpackaging共同组成了项目的坐标,Maven通过一个坐标来定位一个项目,Maven 坐标一般会用冒号作为分隔符来书写。

groupId:artifactId:packaging:version

在上图的项目坐标就可以表示为:

testdemo:demo:jar:1.0-SNAPSHOT

当然这个符号也应用于项目依赖,上图项目中依赖了 JUnit的3.8.1版本,那么它就包含了一个junit:junit:jar:3.8.1的依赖。

4)Maven 仓库(Repositories)

当我们在运行 Maven 项目的时候,Maven 会从 pom.xml 中查找已配置的插件坐标,然后在本地仓库中查找是否有对应的插件,如果没有那么就会从 Maven 自带的远程仓库http://repo1.maven.org/maven2 中下载所需要的插件缓存到本地仓库。本地仓库的默认地址:

如果我们有需要的话也是可以修改本地仓库的地址

<settings>  
    <localRepository>新的仓库地址</localRepository>  
</settings> 
<settings>  
    <localRepository>新的仓库地址</localRepository>  
</settings> 

当 Maven升级后,所有的配置都将会被清除,所以一般不推荐修改全局的配置


Maven插件存储结构

在我们打开本地仓库(repository) 后,我们会看到很多的插件,Maven 仓库会按以下目录格式来存储插件。

/< groupId >/< artifactId >/< version >/< artifactId >-<version>.< packaging >

比如 c3p0-0.9.1.2.jar的存储方式

c3p0

当我们用mvn install对项目进行install时,Maven 也会按上述的格式将所生成的jar/war包保存在仓库中作为依赖插件。

5)Maven 依赖管理(Dependency Management)

所谓依赖就是项目中使用了一些插件,当我们需要运行项目时,我们必须将相应的插件加进来。而 Maven 依赖管理则是将所需要的插件下载到本地仓库,当我们需要使用插件时,只需要在 pom.xml 中去配置相关的依赖即可。

pom.xml

可以看到我们需要加一个依赖也是很简单,只需要在 pom.xml 中在 dependencies 下加一个 dependency 即可,其中 groupIdartifactIdversion决定了 junit的坐标,而 scope 则表示junit的作用范围,test 表示只有项目在执行 compiler:testCompilesurefire:test目标的时候才会被加入到 classpath中。

几个 scope 范围

Maven 的基础概念就差不多啦,大家有疑问的话可以在下方留言哦。😀
下一篇会讲讲实战和更深层次的内容。
(❤ ω ❤)喜欢的话点个❤呗。

上一篇 下一篇

猜你喜欢

热点阅读