以下内容参考自:https://blog.csdn.net/weixin_42112635/article/details/87391047

1. 简介

背景:Apache下的一个纯JAVA开发的项目,用于管理JAVA项目。

作用:一个项目管理(依赖管理)和整合工具(一键构建),为开发者提供了一套完整的构建生命周期框架。

        构建的定义:项目从编译、测试、运行、打包、部署整个过程都交给Maven管理。这个郭晨更被称为构建。

能做什么:项目构建、文档生成、报告、依赖、SCMs、发布、分发、邮件列表。

2. Maven标准项目结构

Maven学习(一)

Maven学习(一)

3. Maven下载及配置环境变量

下载地址:http://maven.apache.org/download.cgi

点击 Download 链接,就可以直接进入到 Maven 软件的下载页面:

Maven学习(一)

 下载完成后解压,如下:

Maven学习(一) 

bin:存放了 maven 的命令
boot:存放了一些 maven 本身的引导程序,如类加载器等
conf:存放了 maven 的一些配置文件,如 setting.xml 文件( Maven 软件的核心配置文件)
lib:存放了 maven 本身运行所需的一些 jar 包

确认本机已经安装好了JDK环境,将Maven也加入环境变量:

Maven学习(一)

把 MAVEN_HOME 添加到 path 里:

Maven学习(一)

打开cmd命令,输入“cmd -v”,查看mvn版本号:

Maven学习(一)

如果失败了,就检查一下Java环境 是否正常,如果Java环境正常,应该是Maven环境变量配置错了。

Maven学习(一)

 4. Maven仓库

   Maven仓库有三种类型:本地仓库、远程仓库(私服)、中央仓库。

   本地仓库:配置好Maven后,下载的jar所在的路径。一般在“C:\Users\Administrator\.m2\repository”路径下。

   远程仓库:我们比较熟悉的国内阿里云仓库,或者其他的私服。因为中央仓库访问量很大,而且在国外,下载会很慢。

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

   中央仓库:Maven的顶级仓库。

   正常情况下,我们引入jar包时,会现在本地仓库查找;如果本地仓库没有,且配置了元辰给仓库,就去远程仓库找;如果远程仓库也没有,才会去中央仓库找。

   那么,如果中央仓库也没有呢?实际开发中,经常会有的情况是,第三方的jar,并没有发布到中央仓库。解决方案有:

 1. 在工程下新建lib目录并将jar拖入,然后直接在pom.xml中引入:

      <dependency>
             <groupId>组织名</groupId>
             <artifactId>唯一标识符</artifactId>
             <scope>system</scope>
             <version>版本号</version>
             <systemPath>${basedir}\src\lib\包名.jar</systemPath>
          </dependency>
       </dependencies>

 2. 安装该jar到本地仓库。cmd命令行输入:

mvn install:install-file -DgroupId=jar组织名 -DartifactId=jar标识符 -Dversion=版本号 -Dpackaging=jar -Dfile=jar包路径 

 然后在项目中引入:

<dependency>  
    <groupId>jar组织名</groupId>  
    <artifactId>jar标识符</artifactId>  
    <version>版本号</version>  
</dependency>

  3. 如果一个项目组十几个人,不能每个人都在本地装一次那个jar包吧?这个时候,就要考虑搭建Maven私服了。

  4. 如果考虑把那个jar开源给所有人用,请参考我的这篇博客:https://blog.csdn.net/qq_28802119/article/details/85256852

5. POM文件

  标准的Maven项目结构:

 Maven学习(一)

 src文件夹中存放的是项目文件。pom.xml就是maven的核心了。下面就是一个标准的pom文件。

<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/maven4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>io.github.xiaoyudeguang</groupId>
  <artifactId>easy-test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>easy-test</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

  POM全称是Project Object Model,直译的话就是项目对象模型,可以猜出来Maven是把我们的项目当做一个对象来处理了。确实如此,我们的项目信息在pom文件中定义好了。从上到下,依次是项目基本信息声明(组织名、唯一标识符、版本号、打包类型)、项目名称、项目地址、一些属性(比如编码格式)的定义、依赖jar包的声明。

    需要注意的是,如果没有在pom.xml中显式声明父级pom(<parent>标签),项目pom.xml默认会继承一个父级pom来完成一些默认设置的继承(约定有限于配置)。<modelVersion>标签的值就是父级pom的版本号。

7. Maven常用命令

  compile  :编译;

  test         :测试;

  clean      : 清理编译后的文件;

  package :打包;

  install  : 打包并上传到本地仓库;

 deploy   : 上传到远程仓库;

 -Dmaven.test.skip=true : 跳过测试;

 PS: 以上命令可以同时使用。

8.Maven指令的三套相互独立的生命周期

Maven学习(一)

  (1)Clean Lifecyle:在真正进行构建前进行一些清理工作(clean);

  (2)Default LifeCyle:核心的构建部分,包括编译、测试、打包、部署等步骤(compile、test、package、install、deploy);

  (3)Site LifeCyle:生成项目报告、站点、发布站点(site)。

    PS:Maven管理声明周期过程都是基于插件完成的。

9. Maven的依赖范围

   Maven学习(一)

 10. Maven插件

     Maven实际上是一个依赖插件执行的框架,每个人物实际上是由插件完成的。Maven插件可以用来

     Maven学习(一)

     插件有以下两种类型:

    Maven学习(一)

     常用插件列表:

     Maven学习(一)

 

相关文章: