【Maven】关于Maven的基础知识和使用

Maven

手动添加jar包到maven库中

  • 手工执行mvn install:install-file的命令,在本地仓库中安装这个依赖。首先复制下面这段命令,然后任意选择地方粘贴,修改后再复制粘贴到cmd窗口。

  • mvn install:install-file -Dfile=d:\apache-maven-3.0.5\jmxtools-1.2.1.jar -DgroupId=com.sun.jdmk -DartifactId=jmxtools -Dversion=1.2.1 -Dpackaging=jar

  • 注意,复制后你要修改的参数: -Dfile=alipay-sdk-java-1.0.0.jar ,这是jar包的路径。 -DgroupId=com.acts (jar包的groupId) -DartifactId=alipay-sdk-java (jar包的artifactId) -Dversion=1.0.0 ,你下载的jar包的版本号 -Dpackaging=jar ,下载的文件的格式,即jar包,一般不用修改。 打开刚刚的网址,可以看到这三个参数的值,cope一下即可。

  • <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>

Maven的基础作用

  • maven可以管理jar文件

  • 自动下载jar和他的文档,源代码

  • 管理jar包的依赖

  • 管理需要的jar包版本

  • 编译程序 java->class

  • 测试代码是否正确

  • 打包文件,形成jar文件或是war文件

  • 部署项目

构建

  • 构建:项目的构建

  • 构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等

  • maven支持的构建包括:

    • 清理:把之前项目编译的都系删除掉,为新的编译代码做准备

    • 编译:把程序源代码编译为执行代码,这个操作是批量的

    • 测试:maven可以执行测试程序代码,验证你的功能是否正确,这个操作也是批量的,可以同时测试多个功能

    • 报告:生成测试结果文件,测试通过就没有

    • 打包:把你的项目中的所有class文件,配置文件等所有资源放到一个压缩文件中,这个压缩文件就是项目的结果文件,通常java程序的压缩文件的拓展名为jar,web项目的拓展名是war

    • 安装:把上一步所生成的文件安装到本机仓库

    • 部署:把程序安装好可以执行

Maven核心概念

  • POM:是一个文件,名称是pom.xml,POM的意思是项目对象模型,maven把一个项目当作一个模型使用,控制maven构建的项目的过程,管理jar依赖

  • 约定的目录结构:maven项目的目录和文件的位置都是规定的

  • 坐标:是一个唯一的字符串,用来表示资源的

  • 依赖管理:管理项目所使用的jar文件

  • 仓库管理:资源的存放位置

  • 生命周期:maven工具构建项目的过程就是maven的生命周期

  • 插件和目标:执行maven构建的时候用的工具就是插件

  • 继承

  • 聚合

Maven配置

  • 解压安装包需要非中文目录

  • 子目录

    • bin:执行程序,主要是mvn.cmd

    • conf:maven工具本身的配置文件settings.xml

  • 配置环境变量

    • 在系统的环境变量中,指定一个M2_HOME的名称,指定值为maven工具的安装目录,在bin之前,不包含bin

    • 然后在path中加入%M2_HOME%\bin

  • 验证maven配置

    • 在DOS窗口中执行mvn -v查看maven的版本信息

    • 若能查看成功,说明maven安装成功

  • 注意:Maven的配置是依赖于JAVA_HOME

Maven约定目录结构和下载

Maven约定目录结构

  • 每一个maven项目在磁盘中都是一个文件夹(项目-Hello)

  • Hello/
        ---/src             
        ------/main         //放主程序java代码和配置文件
        ---------/java      //程序包和包中的java文件
        ---------/resources //java程序需要使用到的配置文件
        ------/test         //放则是程序代码和文件的(可以没有)
        ---------/java      //测试程序包和包中的Java文件
        ---------/resources //测试Java程序中所需要的配置文件
        ---/pom.xml         //maven的核心文件(maven项目必须有)

Maven下载

  • 在项目名的位置在DOS窗口中使用mvn compile 编译src/main目录下的所有java文件

  • 再执行完mvn compile命令之后如果是第一次执行则会开始下载操作

  • Index of /:中央仓库的地址

  • 为什么要下载?

    • maven工具执行了的操作需要很多插件(java类)完成的

  • 下载什么东西?

    • jar文件在maven中叫做插件,实现功能所需要的jar

  • 保存到哪里?

    • 默认仓库(本机仓库):C:\Users\12612.m2\repository

  • 执行mvn compile,结果是在项目的根目录下生成target目录(结果目录),maven编译的java程序,最后的class文件都放在target目录中

  • 设置本机存放资源的目录位置:

    • 修改maven的配置文件,maven安装目录/conf/settings.xml(先备份settings.xml)

    • 修改<localrepository>指定目录下载(不要使用中文目录)

仓库

  • 仓库是什么?仓库是存放东西的,存放maven使用的jar(插件)和我们项目所需要的jar

    • maven使用的插件(各种jar包)

    • 项目所使用的jar包(第三方的工具)

  • 仓库的分类

    • 本地仓库,是在个人计算机上的文件夹,存放各种jar包

    • 远程仓库,是在互联网上的,使用网络才能使用的仓库

      • 中央仓库:最权威的,所有的开发人员都共享使用一个集中的仓库

      • 中央仓库的镜像:就是中央仓库的备份

      • 私服:在公司内部,在局域网中使用的,不对外使用

  • 仓库的使用,maven仓库的使用是不需要人工参与的

    • 开发人员需要使用jar包,maven会先从本地仓库查找,若没有,则会到私服中查找,若没有,则会到中央仓库的镜像中查找,若没有,则会到中央仓库中查找

    • 开发人员需要使用jar包-->maven会先从本地仓库查找-->私服中查找-->中央仓库的镜像中查找-->中央仓库中查找

pom文件(Project Object Model项目对象模型)

  • 基本信息(搜索中央仓库mvnrepository.com)

  • modelVersion:Maven模型版本,对于Maven2和Maven3来说,只能是4.0.0

  • groupId:组织id,一般是公司域名的倒写

  • artifactId:项目名称,也是模块名称,对应groupId中项目中的子项目

  • version:项目的版本号,如果在项目开发中,不是稳定版本,通常在项目后带-SNAPSHOT

    • version使用三位字符标识,1.1.0

  • packaging:项目打包的类型,可以使jar,war,rar,ear,pom,默认是jar

  • groupId,artifactId,version三个元素生成了一个Maven项目的基本坐标,在众多Maven项目中可以唯一定位到某一个项目,坐标也决定着将来项目在仓库中的路径以及名称

  • 使用dependencies和dependency

  • 可以有多个依赖

  • 配置属性properties

  • 构建build

  • 继承parent

  • 聚合modules

Maven的生命周期

  • Maven提供一个项目构建的模型,把清理,编译,测试,报告,打包,安装,部署等都会对应成一个个生命周期阶段,并对每个阶段提供相应的命令

  • Maven的常用命令:

    • mvn clean 清理(删除原来编译和测试的目录(target),但install到仓库里的不会删除)

    • mvn compile 编译主程序(会在当前目录下生成一个target,里边存放编译主程序所生成的class文件)

    • mvn test-compile 编译测试程序(会在当前目录下生成一个target,里边存放编译测试程序后所生成的class文件)

    • mvn test 测试(会生成一个surefire-reports,保存测试结果)

    • mvn package 打包主程序(会编译,编译测试,测试,并且按照pom.xml配置把主程序打包生成jar包或是war包)

    • mvn install 安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)

    • mvn deploy 部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中,还会自动把项目部署到web容器中)

    • 注意:执行以上命令时必须在pom.xml所在的目录中才能使用

  • 单元测试(测试方法)

    • 用的是junit,测试的内容是类中的方法,每一个方法都是独立测试的,方法是测试的基本单位

    • maven借助单元测试,可以批量的测试类中的大量方法是否符合预期

  • 单元测试的使用方法

    • 加入依赖

      • <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        ​
    • 在maven项目中的src/test/java目录下,创建测试程序

      • 推荐的创建类和方法的提示

        • 测试类的名称是Test+测试的类名

        • 测试方法名称是Test+方法名称

      • 其中testAdd叫做测试方法,定义规则:

        • 方法是public的,必须的

        • 方法没有返回值,必须的

        • 方法名称是自定义的,推荐是Test+方法名称

        • 在方法上添加 @Test

在IDEA中设置Maven

  • 首先打开IDEA后,File->Settings->Build,Execution,Deployment->Build Tools->Maven

    • 设置Maven home path:Maven的文件夹位置

    • 设置User settings file:Maven文件夹下conf的settings.xml文件

    • 设置Local repository:Maven的本机仓库

  • 在打开Maven->Runner

    • 设置VM Option:-DarchetypeCatalog=internal,原因是maven项目在创建的时候会联网下载模板文件,比较大,使用该配置后,不用下载,创建Maven项目速度快

    • 设置JRE:本机使用的JDK(推荐使用JDK1.8)

依赖范围

  • 使用scope标签表示的

  • scope的值有compile,test,provided

  • scope:表示的是依赖使用的范围,也就是在maven构建项目的阶段中起作用(清理,编译,测试,打包,安装,部署)

Maven的常用操作

  • maven的属性设置

    • <properties>设置maven的常用属性

  • maven的全局变量

    • 自定义属性

      1. 在<properties>中通过自定义标签声明变量(便签名就是变量名)

      2. 在pom.xml文件中的其他位置,使用${标签名}使用变量的值

  • 自定义全局变量的使用:

    • 自定义全局变量一边是定义依赖的版本号,当项目中要使用多个相同的版本号,先使用全局变量定义,在使用${变量名}

    • <!--资源插件-->
      <resource>                                  
          <directory>src/main/resources</directory>  
          <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->                                     <include>**/*.properties</include>         
          <include>**/*.xml</include>               
          <include>**/*.txt</include>
          </includes>
          <!--filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了 -->
          <filtering>false</filtering>
      </resource>
    • 作用:mybatis会使用到(配置完插件之后)

      • 没有配置

      • 默认没有使用插件resource的时候,maven执行编译代码时,会把src/main/resources目录中的文件拷贝到target/classes目录中

      • 面对src/main/java目录下的非java文件不处理,不拷贝到target/classes目录中

      • 配置完成

      • 程序需要把一些文件放在src/main/java目录中,当在执行java程序时,需要用到src/main/java目录中的文件,需要告诉maven在编译src/main/java目录下的程序时,需要把文件一同拷贝到target/classes目录中此时加入resource

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值