Maven

1. Maven概述

1.1 Maven是什么

Maven是一个强大的Java项目构建工具。

当然,你也可以使用其它工具来构建项目,但由于Maven是用Java开发的,因此Maven被更多的用于Java项目中。

Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目。

1.2 Maven的作用

Maven的定位是项目构建工具,因此需要了解什么是项目构建工具。

构建工具是将软件项目构建相关的过程自动化的工具。

构建一个软件项目通常包含以下一个或多个过程:

  • 生成源码(如果项目使用自动生成源码);

  • 从源码生成项目文档;

  • 编译源码;

  • 将编译后的代码打包成JAR文件或者ZIP文件;

  • 将打包好的代码安装到服务器、仓库或者其它的地方;

有些项目可能需要更多的过程才能完成构建,这些过程一般也可以整合到构建工具中,因此它们也可以实现自动化。

自动化构建过程的好处是将手动构建过程中犯错的风险降到最低。而且,自动构建工具通常要比手动执行同样的构建过程要快。

2. Maven的安装与配置

2.1 安装

  1. 下载并解压Maven;

  2. 添加环境变量M2_HOME,并设置为解压后的目录;

  3. 将M2环境变量设置为M2_HOME/bin(在Windows上是%M2_HOME%/bin,在Unix上是$M2_HOME/bin);

  4. 将M2添加到PATH环境变量中(Windows上是%M2%,Unix上是$M2);

  5. 打开终端输入mvn,然后回车;

输入mvn命令后,终端上回显示错误信息,不要担心这个错误,因为你没有给Maven传入pom文件,因此出现该错误信息是意料之中的。显示Maven错误信息说明Maven已经安装好了。

注意:Maven运行需要Java环境

2.2 配置

1.本地仓库

编辑$M2_HOME/conf/settings.xml

<localRepository>${user.home}/dev/maven_repository</localRepository>

2.国内镜像

编辑$M2_HOME/conf/settings.xml

<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>        
</mirror>

3. 创建Maven项目

3.1 IDEA创建Maven项目

  • 新建项目,左侧选择Maven,勾选create from archetype,并在下方列表中选中org.apache.maven.archetypes:maven-archetype-quickstart

 

  • 填写项目名称、GroupId、ArtifactId以及Version,GroupId通常为公司域名倒置,ArtifactId通常与项目名保持一致,Version为项目版本号,此三项被称为Maven三大坐标,后面详细说。

  • 确认各项配置

  • 创建项目后需要一段时间自动下载Maven所需要的资源,BUILD SUCCESS代表创建完成。

 

3.2 Maven项目结构

  • 新创建的Maven项目结构如下:

 

  • 在main目录下创建两个新的目录javaresources,并分别标记为Sources RootResources Root

  • 最终目录结构如下,java目录中存放java源代码,resources目录存放资源文件,通常为配置文件。

4. pom详解

4.1 pom是什么

Maven项目中最重要的是pom.xml文件,所谓pom意为Project Object Model,即项目对象模型。

Maven体现了面向对象的思想,将每个项目看作是一个对象,并用一个pom文件来具体描述。

每个项目有自己的属性,项目之间也会有一些关系,比如依赖、继承、聚合。

4.2 项目三大坐标

在项目pom的属性中,有三个属性是最重要的,分别是groupId、artifactId以及version,它们统称为Maven三大坐标,我们可以通过这三个属性来查找、定位到某个具体的项目。

  • groupId

    Maven对项目是分组管理的,groupId通常为项目所属公司或组织的域名倒置,比如com.codingfuture

  • artifactId

    用来表示项目ID,即为项目名。

  • version

    项目的版本号,可以为任意值,有两个常用的后缀方式需要了解:

    • RELEASE:发行版、正式版

    • SNAPSHOT:快照版、测试版

4.3 依赖

依赖是Maven中项目之间的一种关系,比如A项目的运行需要引入B项目,如果不使用Maven,我们需要在A项目中引入B项目的jar包,而在Maven中,我们只需要在pom中配置项目A与项目B之间的依赖关系就好,实际的引入操作由Maven来帮我们完成。

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
  </dependency>
</dependencies>

上面这段配置即为该项目的依赖配置,<dependencies></dependencies>内为所有依赖,每一对<dependency></dependency>标签即为本项目的一个依赖项,其中三大坐标是必填项,用来定位所依赖的具体项目,<scope></scope>为依赖的作用域,具体可选值如下:

  • compile

    默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。

  • test

    scope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit。

  • runtime

    runtime表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。通常来说项目之间通过反射进行依赖则可以设置为runtime,最典型的就是mysql驱动。

  • provided

    provided意味着打包的时候可以不用包进去,别的设施(Web Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。

  • system

    从参与度来说,也provided相同,不过被依赖项不会从maven仓库抓,而是从本地文件系统拿,一定需要配合systemPath属性使用

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值