zoukankan      html  css  js  c++  java
  • Maven基础01

    image
    @

    第一章:认识Maven

    1.1-Maven概述

    Maven 翻译为"专家"、"内行",是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。

    Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。

    Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目。Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目。

    1.2-Maven功能

    • maven对项目的第三方构件(jar包)进行统一管理。向工程中加入jar包不要手工从其它地方拷贝,通过 maven定义jar包的坐标,自动从maven仓库中去下载到工程中。
    • maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生 命周期管理:编译、测试、打包、部署、运行。
    • maven对工程分模块构建,提高开发效率。

    1.3-Maven的概念模型

    • 项目对象模型 (Project Object Model)。POM对象模型,每个maven工程中都有一个pom.xml文件,定义工 程所依赖的jar包、本工程的坐标、打包运行方式。
    • 依赖管理系统(基础核心 )。maven通过坐标对项目工程所依赖的jar包统一规范管理。
    • maven定义一套项目生命周期。清理、初始化、编译、测试、报告 、打包、部署、站点生成。
    • 一组标准集合。maven工程有自己标准的工程目录结构、定义坐标有标准。 maven 管理项目生命周期过程都是基于插件完成的,例如:开发中使用的tomcat插件。

    1.4-约定配置

    Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示:

    目录 目的
    ${basedir} 存放pom.xml和所有的子目录
    ${basedir}/src/main/java 项目的java源代码
    ${basedir}/src/main/resources 项目的资源,比如说property文件,springmvc.xml
    ${basedir}/src/test/java 项目的测试类,比如说Junit代码
    ${basedir}/src/test/resources 测试用的资源
    ${basedir}/src/main/webapp/WEB-INF web应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面
    ${basedir}/target 打包输出目录
    ${basedir}/target/classes 编译输出目录
    ${basedir}/target/test-classes 测试编译输出目录
    Test.java Maven只会自动运行符合该命名规则的测试类
    ~/.m2/repository Maven默认的本地仓库目录位置

    1.5-Maven仓库

    概述

    在 Maven 的术语中,仓库是一个位置(place)。

    Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。

    在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。

    Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。

    Maven 仓库有三种类型:

    • 本地(local)
    • 中央(central)
    • 远程(remote)

    本地仓库

    Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。

    运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。

    默认情况下,不管Linux还是 Windows,每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。

    Maven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置,在 %M2_HOME%conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
       http://maven.apache.org/xsd/settings-1.0.0.xsd">
          <localRepository>C:/MyLocalRepository</localRepository>
    </settings>
    

    当你运行 Maven 命令,Maven 将下载依赖的文件到你指定的路径中。

    中央仓库

    Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。

    中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到。

    中央仓库的关键概念:

    • 这个仓库由 Maven 社区管理。
    • 不需要配置。
    • 需要通过网络才能访问。

    要浏览中央仓库的内容,maven 社区提供了一个 URL:http://search.maven.org/#browse。使用这个仓库,开发人员可以搜索所有可以获取的代码库。

    远程仓库

    如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。

    举例说明,使用下面的 pom.xml,Maven 将从远程仓库中下载该 pom.xml 中声明的所依赖的(在中央仓库中获取不到的)文件。

    <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.companyname.projectgroup</groupId>
       <artifactId>project</artifactId>
       <version>1.0</version>
       <dependencies>
          <dependency>
             <groupId>com.companyname.common-lib</groupId>
             <artifactId>common-lib</artifactId>
             <version>1.0.0</version>
          </dependency>
       <dependencies>
       <repositories>
          <repository>
             <id>companyname.lib1</id>
             <url>http://download.companyname.org/maven2/lib1</url>
          </repository>
          <repository>
             <id>companyname.lib2</id>
             <url>http://download.companyname.org/maven2/lib2</url>
          </repository>
       </repositories>
    </project>
    

    Maven的依赖搜索顺序

    当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:

    • 步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
    • 步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
    • 步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
    • 步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。

    Maven阿里云(Aliyun)仓库

    Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。

    第一步:修改 maven 根目录下的 conf 文件夹中的 setting.xml 文件,在 mirrors 节点上,添加内容如下:

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

    image

    第二步: pom.xml文件里添加:

    <repositories>  
            <repository>  
                <id>alimaven</id>  
                <name>aliyun maven</name>  
                <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
                <releases>  
                    <enabled>true</enabled>  
                </releases>  
                <snapshots>  
                    <enabled>false</enabled>  
                </snapshots>  
            </repository>  
    </repositories>
    

    1.6-Maven的坐标

    Maven的一个核心的作用就是管理项目的依赖,引入我们所需的各种jar包等。

    为了能自动化的解析任何一个Java构 件,Maven必须将这些Jar包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们要说的坐标。

    包括我们自己开发的项目,也是要通过坐标进行唯一标识的,这样才能在其它项目中进行依赖引用。

    坐标的定义元 素如下:

    • groupId:定义当前Maven项目名称
    • artifactId:定义项目模块
    • version:定义当前项目的当前版本

    例如:要引入junit的测试jar,只需要在pom.xml配置文件中配置引入junit的坐标即可

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

    第二章:Maven环境配置

    Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK。

    2.1-系统要求

    项目 要求
    JDK Maven 3.3 要求 JDK 1.7 或以上
    Maven 3.2 要求 JDK 1.6 或以上
    Maven 3.0/3.1 要求 JDK 1.5 或以上
    内存 没有最低要求
    磁盘 Maven 自身安装需要大约 10 MB 空间。除此之外,额外的磁盘空间将用于你的本地 Maven 仓库。你本地仓库的大小取决于使用情况,但预期至少 500 MB
    操作系统 没有最低要求

    2.2-检查Java安装

    操作系统 任务 命令
    Windows 打开命令控制台 c:> java -version
    Linux 打开命令终端 # java -version
    Mac 打开终端 $ java -version

    2.3-Maven下载

    Maven下载

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

    image

    不同平台下载对应的包

    系统 包名
    Windows apache-maven-3.3.9-bin.zip
    Linux apache-maven-3.3.9-bin.tar.gz
    Mac apache-maven-3.3.9-bin.tar.gz

    下载包后解压到对应目录

    系统 存储位置 (可根据自己情况配置)
    Windows E:Mavenapache-maven-3.3.9
    Linux /usr/local/apache-maven-3.3.9
    Mac /usr/local/apache-maven-3.3.9

    2.4-设置Maven环境变量

    添加环境变量 MAVEN_HOME:

    系统 配置
    Windows 右键 "计算机",选择 "属性",之后点击 "高级系统设置",点击"环境变量",来设置环境变量,有以下系统变量需要配置:
    新建系统变量 MAVEN_HOME,变量值:E:Mavenapache-maven-3.3.9
    image
    编辑系统变量 Path,添加变量值:;%MAVEN_HOME%inimage注意:多个值之间需要有分号隔开,然后点击确定。
    Linux 下载解压:
    image 编辑 /etc/profile 文件 sudo vim /etc/profile,在文件末尾添加如下代码:
    image保存文件,并运行如下命令使环境变量生效:
    source /etc/profile
    在控制台输入如下命令,如果能看到 Maven 相关版本信息,则说明 Maven 已经安装成功:
    image
    Mac 下载解压:
    image编辑 /etc/profile 文件 sudo vim /etc/profile,在文件末尾添加如下代码:
    image保存文件,并运行如下命令使环境变量生效:image在控制台输入如下命令,如果能看到 Maven 相关版本信息,则说明 Maven 已经安装成功image
  • 相关阅读:
    「ROI 2019 Day1」运输 20/19
    「ROI 2018 Day 2」无进位加法
    「ROI 2018 Day 1」量子隐形传态
    「ROI 2018 Day 2」快速排序
    「ROI 2018 Day 1」Innophone (分块+斜率优化)
    「ROI 2017 Day 1」虎 (计算几何)
    [BJ United Round #3] 押韵 [学习笔记]
    「CEOI2020」象棋世界
    CF1375G
    CF1392(div1+div2)
  • 原文地址:https://www.cnblogs.com/lpl666/p/12154323.html
Copyright © 2011-2022 走看看