Maven

官方:http://maven.apache.org/

1. 软件是一个工程

没有使用maven管理的项目有一些问题

  1. 模块太多,要手工管理关系,比较繁琐
  2. 需要很多第三方功能,需要很多jar包,需要手动从网络中获取各个jar
  3. 需要管理jar的版本。
  4. 管理jar文件之间的依赖, 你的项目

2. 需要改进项目的开发和管理,需要maven

  1. maven可以管理jar文件
  2. 自动下载jar和他的文档,源代码
  3. 管理jar直接的依赖
  4. 帮你编译程序,把java编译为class
  5. 管理你需要的jar版本
  6. 帮你测试你的代码是否正确
  7. 帮你打包文件,形成jar文件,或者war文件
  8. 帮你部署项目

3. 项目的构建

构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行打包,部署等。
maven支持的构建包括有:

  1. 清理, 把之前项目编译的东西删除调,为新的编译代码做准备
  2. 编译, 把程序源代码编译为执行代码,java-class文件,批量的,maven可以同时把成千上百的文件编译为class。
  3. 测试, maven可以执行测试程序代码,验证你的功能是否正确。maven可以执行多个测试代码,同时测试很多功能。
  4. 报告, 生成测试结果文件,测试通过没有。
  5. 打包,把你的项目中所有的class文件,配置文件等所有资源放到一个压缩文件中。这个压缩文件就是项目的结果文件,通常java程序,压缩文件是jar扩展名的。对web应用,压缩文件扩展名是.war

4.maven的核心概念

1.POM:一个文件,名称叫pom.xml,项目对象模型。maven把一个项目当做一个模型使用。可以实现控制maven构建项目的过程,管理jar依赖。
2.约定的目录结构:maven项目的目录和文件的位置都是规定的。
3.坐标:是一个唯一的字符串,用来表示资源的。
4.依赖管理:管理你的项目可以使用jar文件。
5.仓库管理(了解):你的资源存放位置。
6.声明周期(了解):maven工具构建项目的过程。
7.插件和目标(了解):执行maven构建的时候用的工具是插件
8.继承
9.聚合

  • maven工具的安装和配置
  1. 在官方下载。
  2. 解压安装包,解压到一个目录,非中文目录。
    子目录 bin:执行程序,主要是mvn.cmd
    conf:maven工具本身的配置文件 settings.xml
  3. 配置环境变量:
    在系统的环境中,指定一个M2-HOME的名称,指定它的值是maven工具的安装目录,bin之前的目录。
    M2_HOME=D:\maven\apache-maven-3.6.3
    添加path: %M2_HOME%\bin;
  4. 验证,maven是否成功输入mvn -v(注意必须先把jdk配置好)
  • Maven工程约定目录结构,大家都遵循的一个规则

每一个maven项目在磁盘中都是一个文件夹(项目-hello)
hello/
---/src
-------/main # 放主程序的java代码和配置文件
------------>java # 你的程序包和包中的java文件
------------>ressource # 你的java程序中要使用的配置文件
-------/test # 放测试程序代码和文件的(可以没有)
------------>java # 测试的程序包和包中的java文件
------------>ressource # 测试的java程序中要使用的配置文件
---/pom.xml #maven的核心文件(maven项目必须有)

  • maven下载做了什么?
  1. maven工具执行的操作需要很多插件(java类--jar文件)完成的
  2. jar文件--叫做插件--插件是完成某些功能
  3. 下载到本机的默认地址(Administrator.m2\reponsitory)
    执行mvn compile , 结果是在项目的根目录下生产target目录(.class文件)
  • 修改本地存放资源仓库
    修改maven的配置文件, maven安装目录/conf/settings.xml
  1. 先备份settings.xml
  2. D:\maven\JAR: 配置本地资源仓库地址。
  • 仓库
  1. 仓库是什么: 仓库是存放东西的, 存放maven使用的jar和我们项目使用的jar,已经我们使用的第三方jar
  2. 仓库的分类
    本地仓库, 就是你的个人计算机的文件夹,存放各种jar。
    远程仓库,在互联网上的,使用网络才能使用的仓库
    (中央仓库:所有开发人员使用的一个集中的仓库)
    (中央仓库的镜像:就是中央仓库的备份,在各大洲都有)
    (私服:在公司内部,在局域网中使用的,不是对外使用的)
  3. 仓库的使用, maven仓库的使用不需要人为参与
    例:开发人员需要使用mysql驱动 ---> maven首先查本地仓库 --- 私服 --- 镜像 --- 中央仓库
  • pom:项目的对象模型,☞pom.xml文件
    坐标 : groupId + artifactId + version = 坐标
    坐标是唯一的。
    https://mvnrepository.com/
    搜索使用的中央仓库的资源
      公司域名倒写
      自定义项目名称
      版本号
  1. modelVersion:maven模型的版本
  2. groupId:表示组织名称,一般是公司的倒写。例:(com.baidu.appolo)
  3. artifactId:项目名称,对于groupId中的子项目
  4. version: 项目版本号 (-SNAPSHOT 表示不是稳定
    版本,还在开发中)
  5. packaging : 打包后的压缩文件默认是jar
  6. 依赖: dependencies和dependency
    org.springframework spring-aspects 5.1.10.RELEASE
  7. properties:是用来定义一些配置属性的。
  8. build:maven在进行项目构建时,配置信息,例如指定编译java代码使用的jdk的版本等等。
  • maven的声明周期:
    maven提供一个项目的构建模型,把编译、测试、打包、部署等都对应成一个个声明周期阶段。
  • maven的常用命令:
    maven可以独立使用,通过命令完成mavven的生命周期执行。
  1. mvn clean: 清理target目录,但是已经install到仓库里的包不会删除。
  2. mvn compile: 编译主程序(在当前目录下生成target目录,里面存放编译测试程序之后生成的字节码文件)
  3. mvn test-compile : 编译测试程序(会生成一个目录surefire-reports,保存测试结果)
  4. mvn package:打包主程序(把主程序打包成jar或者war包)
  5. mvn install:安装主程序(会把本工程打包,并且按照工程的坐标保存到本地仓库中)
  6. mvn deploy: 部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中。还会自动把项目部署到web容器中)
  • maven的插件:maven命令执行时真正完成给我那个的是就是插件=jar文件=一些类。

  • 单元测试:用的是junit, junit是一个专门测试的框架(工具),
    junit测试的内容:每一个方法都是独立测试的,方法是测试的基本单位(单元测试)。
    maven借助单元测试,批量的测试你类中的大量方法是否符合预期的。

使用步骤: 1. 加入依赖


    junit
    junit
    4.11
    test

  1. 在maven项目中的src/test/java目录下,创建测试程序
    推荐的创建测试类的名称是Test+你要测试的类名
    方法必须pubulic
    方法没有返回值
    在方法上面加入@Test
    @Test
    public void TestController(){
        String path = "config/beanDo.xml";
        ApplicationContext context = new ClassPathXmlApplicationContext(path);
        User user = (User)context.getBean("user");
        System.out.println(user.toString());
    }
  • 控制配置

    test
    
      
        
          maven-clean-plugin
          3.1.0
        
        
        
          maven-resources-plugin
          3.0.2
        
        
          maven-compiler-plugin
          3.8.0
        
      
    
  

! 在idea中用maven

  1. 让idea和maven结合使用。

idea中内置了meavn,但是一般使用,因为不好改。
配置入口: 1. file ----- > setting 配置当前工程的设置,
file ----- > otherSetting 配置以后新建工程的设置
Maven Home directory : maven的安装目录
User Settings File : 就是maven安装目录的conf/settings.xml文件
Local Repository:本机仓库位置
在Runner ---- > VM Options:
-DarchetypeCatalog=internal
为了让maven创建的快一些(不下载模板文件)

  1. 创建一个maven项目
  • 使用模板创建项目 maven-archetype-quickstart


  • 设置坐标

junit中
 Assert.assertEquals(40, res); // 判断结果是否正确
  • 生命周期双击即可


  • 创建一个web项目
  
      javax.servlet.jsp
      jsp-api
      2.1
      provided
    
    
      javax.servlet
      javax.servlet-api
      3.1.0
      provided
    

web工程打包后变成.war文件

  • 依赖范围 ,使用scope标识的

scope的值有 compile(默认所有过程中), test(测试), provided(提供者 只在编译,测试时用)
scope: 表示依赖使用的范围,也就四十在maven构建项目的哪些阶段中起作用。

  • maven的常用设置
  1. maven的属性设置
    pom.xml中设置maven常用属性
  2. maven的全局变量
    自定义属性:1. 在通过自定义标签声明变量
    2.在pom.xml中,使用{标签名}使用变量的值 自定义全局变量一般定义 依赖的版本号,当你的项目要使用多个相同的版本号,先试用全局变量定义,在使用{标签名}

  3. 资源插件



                src/main/resources
                
                    **/*.properties
                    **/*.xml
                    **/*.txt
                
                
                false
            


作用是:

  1. 默认没有使用resource的时候, maven执行编译代码时,会把src/main/resource 目录中的文件拷贝到target/classes中。但是对于src/main/java目录下非java文件不处理,不拷贝到target/classes目录中
  2. 我们的程序有需要把一些文件放在src/main/java目录中,当我在执行java程序时,需要用到用到src/main/java目录中的文件所以此时我们要加resoucres插件处理src、main/java


你可能感兴趣的:(Maven)