Maven项目管理工具

1 什么是Maven

  1. Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建, 告和文档的软件项目管理工具
  2. Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。
  3. [相当于iOS cocoapods]
  4. Maven的好处【 lib】
  1. 方便jar的管理
  2. 不需要上传jar包到svn

2如何使用Maven

2.1第一:安装本地Maven

  1. 先打开浏览器访问maven官 【rz】,下载下图红色的zip文件

  1. 接着解压文件夹到用户目录下C:Usersguoyongfeng中,【这里解压的路径随机,个人喜欢放在用户目录而已】
  2. 然后需要配置path环境变量
    1. 系统变量:MAVEN_HOME = C:Usersguoyongfengapache-maven-3.5.0
    2. 系统变量:path = %MAVEN_HOME%bin

最后打开命令行,输入mvn -version,出现下面内容表示本地maven安装和配置成功了

 

2.2第二:了解下Maven的仓库

  1. 仓库是用来干啥的呢实就是用来存放 上下载到本地的jar
  2. 仓库路径默认情况下在用户目录下C:Usersguoyongfeng.m2repository
  3. 配置仓库路径 在bin目录下的config/settings.xml

 

在 cmd 中敲并回车执行:mvn help:system

 

maven默认会从上面的服务器(中央仓库) 下载 jar包到本地

 

2.3第三 修改setting.xml配置文件

在mirrors中添加下面的内容,使用阿里云服务器下载jar包,因为国外的下载太慢了,把国外的注释不用

 

     <!– 阿里云仓库 –>

        <mirror>

            <id>alimaven</id>

            <mirrorOf>central</mirrorOf>

            <name>aliyun maven</name>

            <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>

        </mirror>

   

        <!– 中央仓库1 –>

        <mirror>

            <id>repo1</id>

            <mirrorOf>central</mirrorOf>

            <name>Human Readable Name for this Mirror.</name>

            <url>http://repo1.maven.org/maven2/</url>

        </mirror>

   

        <!– 中央仓库2 –>

        <mirror>

            <id>repo2</id>

            <mirrorOf>central</mirrorOf>

            <name>Human Readable Name for this Mirror.</name>

            <url>http://repo2.maven.org/maven2/</url>

        </mirror>

 

 

 

2.4第四:安装Eclipse的Maven插件 

  1. 为什么要安装maven插件
    1. 需要一些命令,需要maven插件
    2. 因为以前创建动态的javaweb项目,以后我们创建的是一个maven项目,maven也是一个web项目,java项目
  2. Maven项目是通过pom.xml文件来管理jar包的
  3. Eclipse安装Maven插件有三种方式
  4. Eclipse neon的版本默认已经安装了maven的插件
  5. 如果是旧版本的Eclipse,就需要手动安装maven插件,
    1. 一种离线安装,比较快
    2. 一种在线安装,比较慢

第一种方式:把插件放在eclipse的dropins中【练】

  1. 【离线安装】,把插件放在eclipse的dropins
  1. 打开preferences点击Maven后,会出现下面的警告框,需要配置下eclipse.ini文件

解决上面的问题,只需要在eclipse.ini文件添加下面两行代码

-vm

C:Program FilesJavajdk1.8.0_131binjavaw

  1. 接着需要点击maven的User Setting选项,配置路径为本地maven的settings.xml路径,如图

 

第二种方式:点击EclipseHelp -> Install New Software

  1. 在弹出的界面中,添入下面红色框内容点击OK安装【http://m2eclipse.sonatype.org/sites/m2e
  2. 装完后重启Eclipse

 

 

安装完后,会在Eclipse的Preference偏好设置中出现maven选项

 

第三种方式:点击EclipseHelp ->Eclipse Marketplace

  1. 然后在find中搜索maven安装即可

 

 

3 Maven常用命令

3.1 Maven项目结构

ProjectName

  |-src

  |   |-main

  |   |  |-java        —— 存放项目的.java文件

  |   |  |-resources   —— 存放项目资源文件,如spring, hibernate配置文件

  |   |-test

  |      |-java        ——存放所有测试.java文件,如JUnit测试类

  |      |-resources   —— 测试资源文件

  |-target             —— 目标文件输出位置例如.class、.jar、.war文件

  |-pom.xml           ——maven项目核心配置文件

 

3.2 eclipse创建Maven简单项目

创建项目前,把eclipse中maven配置文件路径改下

 

 

  1. 通过Eclipse在项目浏览器右键创建一个简单的maven项目,项目名为【test1】步骤如图

 

  1. Pom.xml,这里使用【junit 4.10进行单行测试】

<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.gyf</groupId>

  <artifactId>test1</artifactId>

  <version>0.0.1-SNAPSHOT</version>

 <!– 添加依赖 –>

  <dependencies>

  <dependency>

   <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>4.10</version>

      <scope>test</scope>

  </dependency>

  </dependencies>

</project>

 

在学习下面的命令前,打开终端切换到项目路径

 

3.3 mvn compile

      编译

  1. 完成编译操作
  2. 执行完毕后,会生成target目录,该目录中存放了编译后的字节码文件。

3.4 mvn clean

  1. 执行完毕后,会将target目录删除。

3.4 mvn test

      编译,测试,跑测试用例

  1. 完成单元测试操作
  2. 执行完毕后,会在target目录中生成三个文件夹:surefire、surefire-reports(测试 告)、test-classes(测试的字节码文件)

 

3.4 mvn package

      编译,测试,跑测试用例,打包

  1. 完成打包操作
  2. 执行完毕后,会在target目录中生成一个文件,该文件可能是jar、war

 

 

3.4 mvn install

     编译,测试,跑测试用例,打包,最后丢到本地仓库

  1. 执行 mvn install命令,完成将打好的jar包安装到本地仓库的操作
  2. 执行完毕后,会在本地仓库中出现安装后的jar包,方便其他工程引用

 

3.4 mvn 组合命令

  1. mvn clean compile
  2. mvn clean test
  3. mvn clean package
  4. mvn clean install

 

3.5 maven插件集成命令

  1. 当我们安装完maven的插件到eclipse后,插件提供了一些菜单可用
  2. 演示下clean install test 的效果

 

 

如果再使用过程中,遇到下面问题,解决办法

 

 

4 项目引用另一个项目

  1. 现在我们来学习一个maven项目引用另一个maven项目
  2. 首先创建一个maven简单项目,名为test2
  3. 然后test2项目里写个单元测试代码,调用test1的service代码
  4. 实现的关键只需要在test2中添加test1项目的依赖即可,注意下图红色框的内容

 

5 Maven的核心概念

5.1 坐标

  1. 在平面几何中坐标(x,y)可以标识平面中唯一的一点。maven中坐标就是为了定位一个唯一确定的jar包。
  2. Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范,拥有了统一规范,就可以把查找工作交给机器
  3. Maven坐标主要组成(GAV) -确定一个jar在互联 位置

groupId:定义当前Maven组织名称

artifactId:定义实际项目名称

version:定义当前项目的当前版本

 

5.2 坐标的查找

  1. 访问http://www.mvnrepository.com或者http://search.maven.org/ 站
  2. 假设搜索所spring core,如图然后点击sping,接点选择所需要的版本,就能看到所需要的jar包了

 

 

 

5.3 依赖管理

5.3.1 scope 依赖范围

其中依赖范围scope 用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下:

  1. compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效
  2. test:测试依赖范围。只对于测试classpath有效
  3. provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api
  4. runtime:运行时提供。例如:jdbc驱动

 

5.3.2依赖传递

  1. 直接依赖和间接依赖
  2. test2 依赖 test1,test3依赖test2
  3. test2 直接依赖 test1,test3间接依赖test1

  1. 当第二依赖的范围是compile的时候,依赖可以传递
  2. 当第二直接依赖的范围是test的时候,依赖不会得以传递
  3. provided和runtime后面有遇到再讲,一般很少用,可以不用掌握。

 

5.3.3依赖冲突

  1. 假如test1使用junit4.10依赖,并且scope是compile,那test2,test3都可以使用test1的junit4.10,因为传递下来了
  2. 假如test2使用junit4.9依赖,那test3会使用【就近的一个依赖】,也就是使用junit4.9

 

5.3.4可选依赖

  1. <optional> true/false<optional> 是否可选,也可以理解为是否向下传递。
  2. 在依赖中添加optional选项决定此依赖是否向下传递,如果true则不传递,如果是false就传递,默认为false

 

5.3.5 排除依赖

  1. exclusions可用于排除依赖,注意exclusions是写在dependency

 

5.4 生命周期【了解】

  1. Maven生命周期就是为了对所有的构建过程进行抽象和统一
  2. 包括项目清理初始化、编译、打包、测试、部署等几乎所有构建步骤。
  3. 生命周期可以理解为构建工程的步骤。

 

在Maven中有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:

  1. Clean Lifecycle: 在进行真正的构建之前进行一些清理工作。
  2. Default Lifecycle: 构建的核心部分,编译,测试,打包,部署等等。
  3. Site Lifecycle: 生成项目 告,站点,发布站点。

 

5.4.1 Clean生命周期:清理项目

Clean生命周期一共包含了三个阶段:

pre-clean 执行一些需要在clean之前完成的工作

clean 移除所有上一次构建生成的文件

post-clean 执行一些需要在clean之后立刻完成的工作

 

  1. 也就是说,mvn clean 等同于 mvn pre-clean clean
  2. 如果我们运行 mvn post-clean ,那么 pre-clean,clean 都会被运行。
  3. 这是Maven很重要的一个规则,可以大大简化命令行的输入。

 

5.4.2 Default生命周期:构造项目

  1. Default生命周期是Maven生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。这里,只解释一些比较重要和常用的阶段

validate

generate-sources

process-sources

generate-resources

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年3月2日
下一篇 2019年3月3日

相关推荐