动力节点Maven课程笔记

Maven

一,Maven简介

1,Maven的主要目标是让开发人员在最短的时间内理解开发工作的完整状态。为了实现这一目标,Maven处理了几个关注的领域:

  • 简化构建过程
  • 提供统一的构建系统
  • 提供高质量的项目信息
  • 鼓励更好的发展实践

虽然使用Maven并不能消除了解底层机制的需要,但Maven确实保护开发人员免受许多细节的影响。

什么是软件工程:

为了能能够实现软件的流水线式生产,在设计和构建软件的是hi偶能能够有一种规范和工程化的方法,人们便提出了软件工程的概念。

完成一个java项目需要做的工作:

  • 1,分析项目要做什么,要知道项目有哪些组成 部分。
  • 2,设计项目,用过哪些步骤,使用哪些技术,需要多少人,多啊尝试阿金完成。
  • 3,组建团队,找人,购置设备,服务器,软件,笔记本。
  • 4,开发人员写代码,开发人员需要测试自己的代码。重读多次的工作。
  • 5,测试人员,测试项目的功能是否符合要求。
    • 测试开发人员提交的代码,如果测试有问题,需要开发人员修改,在提交给测试人员,测试人员再测试代码,再提交给开发修改。

传统的开发项目中的问题(没有使用Maven管理的项目)

1)很多模块,模块之间有关系,手工管理关系,比较繁琐。

2)需要很多第三方功能,需要很对jar包文件,需要手工从网络中获取各个jar包。

3)需要管理jar包的版本。需要5.5.1的就不能是4.0.0的包

4)管理依赖,管理jar文件抓紧啊的依赖,你的项目要使用a.jar,需要使用b.jar里面的类。

必须首先获取到B.JAR才可以,然后才能使用a.jar,

需要改进项目的开发和管理,就需要Maven

  • Maven可以管理jar文件
  • 自动下载jar和他的文档,源代码等。
  • 管理jar直接的依赖,a.jar需要b.jar,Maven会自动下载b.jar
  • 管理你需要的jar版本
  • 帮你测试你的代码时候正确。
  • 帮你打包文件,形成jar文件,或者war我呢见
  • 帮你部署项目。

构建:

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

Maven支持的构建包括有:

  • 清理,把之前的项目编译的东西删除掉,我新的编译代码做准备。
  • 编译,把程序源代码编译为执行代码,java-class文件批量的,Maven可以同时把成千上百的文件编译为class。javac不一样,javac一次编译一个文件。
  • 测试,Maven可以执行测试程序代码,验证你的功能是否只正确。批量的,Maven同时执行多个测试代码,同时测试很多功能。
  • 报告,生成测试结果的文件,测试通过没有。
  • 打包,把你的项目中松油的class文件,配置文件等所有资源我放到一个压缩文件中。这个压缩文件就是项目的结果文件,通过java程序,压缩文件是jar扩展的。
  • 安装,把上面生成的jar我呢见,war文件安装奥本机仓库。
  • 部署,把程序安装好可以执行。

Maven的核心概念

用好Maven,了解这些概念

  1. POM
    • 指的是一个文件,我呢见的名称是pom.xml,pom(项目对象模型),Maven把一个项目当作一个模型来使用,可以控制Maven构建项目的国策灰姑娘,管理jar依赖。
  2. 约定的目录结构
    • Maven项目的目录和文件的文职都是规定的,不能随便乱建。
  3. 坐标
    • 是一个唯一的字符串,用来表示资源的。
  4. 依赖管理
    • 管理项目中可以使用的jar包
  5. 仓库管理(了解)
    • 资源存放的位置。
  6. 生命周期(了解)
    • Maven构建项目的过程。
  7. 插件和目标(了解)
    • 执行Maven构建的时候用的工具是插件。
  8. 继承(后面讲)
  9. 聚合(后面讲)

二,Maven核心概念****

使用的是Maven的命令,完成maven使用,再idea中直接使用maven,代替命令。理解命令了,更加方便的使用Maven功能。

  • 安装Maven和配置

  • 下载:Maven.apache.org—-download——apache-maven-3.6.3-bin.zip(比较常用的版本,3.3.9)

  • 下载之后解压缩即可。

    • bin:执行程序,只要是mvn.cmd
    • conf:maven工具本身的配置文件 setting.xml
  • 配置环境变量。

    • M2_HOME = Maven的安装目录。
    • path = %M2_MAVEN%\bin
  • 在cmd中,执行mvn -v即可。

  • Maven工程约定的目录结构

    每一个Maven项目都是一个文件夹(项目名称)(Hello)

    |—Hello

    |—|—src

    |——|—main #主程序的java代码和配置文件

    |——|—main—java #你的程序包和包中的java文件

    |——|—main—resources #你的java程序包中需要使用的配置文件

    |——|—test #放测试程序代码和文件的(可以没有)

    |——|—test—java #你的测试程序包和包中的java文件

    |——|—test—resources #你的测试程序包中需要使用的配置文件

    |—pom.xml #Maven项目的核心文件(maven项目必须有)

    https://repo.maven.apache.org 中央仓库

Mavne执行的操作需要很多的插件完成,就是很多java类,需要先到仓库中下载这些插件,才能用。

下载的jar文件在maven中叫做插件。

这个东西放在哪里了呢?放在C盘用户administor文件夹的.m2文件夹下的repository文件夹中。

本地默认仓库:repository;(这个路径可以修改,后面可以根据需求修改)

BUILD SUCCESS! 这样就编译成功了。

执行mav compile,结果是在项目的根目录下生成了target目录(结果目录)

maven编译的class文件都放在这个文件夹里面。

修改maven下载路径

1,修改maven的配置文件,maven安装目录/conf/setting.xml 需要先备份这个文件

2,打开上述文件,修改标签

要放到外面,不能放到注释李米娜,放到注释里面不起作用。(配置本地仓库)整个路径中不要存在中文即可。

3,仓库分类:

  • 仓库:是存放东西的地方,存放maven使用的jar和我们项目使用的jar包的地方
    • 本地仓库:个人计算机上的文件夹
    • 远程仓库:在互联网上,使用网络才能使用的仓库
      • 中央仓库:最权威的仓库,世界上所有的开发人员都在使用的仓库。
      • 中央仓库的镜像:就是中央仓库的备份,在各大洲,重要的城市都是镜像。
        • 亚洲的镜像,欧洲的镜像
      • 私服:通过互联网访问,在公司的内网中使用的。

4,仓库的使用,maven仓库的使用不需要人为参与。

​ 开发人员需要用mysql驱动,maven首先检查本地仓库,私服,镜像,中央仓库。

5,pom文件,项目对象的模型,把一个项目的机构和内容抽象成一个模型,在xml文件中进行胜面更,以方便进行构建和描述。pom.xml文件时maven的灵魂,maven环境搭建好之后,所有的学习和操作都是关于pom.xml的。

pom.xml初识

moudelVersion maven模型的版本,对于maven2和maven3来说i,他只能是4.0.0

groupID 组织id,一般是公司域名的倒写,域名倒写:com.baidu,域名倒写:com.baidu.applo;

version 项目版本号,还在开发中,非稳定版本,通常在后面加上-SNAPSHOT,version使用三位数字1.0.0类似

以上三个加在一起表示一个坐标,唯一标识

www.mvnrepository.com:搜索使用的中央仓库,使用groupID或者artifactID作为搜索条件。

www.mvnrepository.com:这个也是个中央仓库。

packaging 项目打包后压缩文件的扩展名,默认是jar,web应用是war,packaging不写,默认是jar。

dependencies和depedency:项目中要使用的各种资源,相当于java中的import。

<dependencies>
<--! 依赖  java代码中import-->
	<dependency>
  	  <groupID>mysql</groupID>
	  <artifactID>mysql-connector-java</artifactID>
   	  <version>5.1.9</version>
	</dependency>
</dependencies>
    
    
    <properties><--! 配置属性-->
    	<java-version>1.8</java-version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <build>
        
        <--!     build表示与构建相关的配置,例如设置编译插件的版本jdk版本等信息-->
        </build>
 
    

比较重要的两个依赖

<--! 日志依赖-->
<dependency>
	<groupID>log4j</groupID>
    <artifactid>log4j</artifactid>
    <version>1.2.17</version>
</dependency>

<--! 单元测试依赖 -->
<dependency>
	<groupid>junit</groupid>
	<artifactid>junit</artifactid>
    <version>4.11</version>
</dependency>

Maven的生命周期

生命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署等

Maven的命令 maven的插件

命令:maven命令可以单独使用,通过命令,完成maven的生命周期的执行,maven可以使用命令完成项目的清理,编译,测试等等。

maven插件:maven命令执行时,真正完成功能的是插件,插件就是一些jar文件,一些类文件。

1)单元测试:用的时Junit,junit是一个专门测试的框架(小工具),测试的内容:测试类中的方法,每一个方法都是独立测试的。方法时测试的基本单位。(单元)。

2)maven借助单元测试来批量的测试你类中的大量方法时候符合预期的。

3)使用步骤

  • 添加依赖,在pom.xml文件中,添加依赖。JUnit-4.13

  • 在maven项目中的src/test/java目录下,创建测试程序。

    • 1,测试类的名称是:Test+你要测试的类名
    • 2,测试的方法名称是 Test+方法名称
  • 例如TestAdd方法叫做测试方法,它定义的规则是:

    • 1,方法是public的 必须的

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

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

    • 4,方法体上面要有@Test注解(annotation)

    •  @(Test)
       public static void TestAdd(){
       	HelloMaven hm = new HelloMaven();
           int res = hello.add(10,20);
           Assert.assertEquals(30,res);
           
       //Assert.assertEquals(期望值,实际值)
           //如果两个值相等,就说明是正确的,如果不相等,说明就不是正确的类。
       }
      

Maven常用的命令

1,mvn clean 清理:会删除原来编译和测试的目录,即target目录,但是已经install到仓库里的包不会删除。

2,mvn compile 编译测试程序:会在当前目录下生成一个target,里面存放编译测试程序之后生成的字节码文件。

3,mvn test :测试:会生成一个目录,surefire-reports,保存测试结果.

4,mvn package 打包主程序:会编译,编译测试,测试,按照pom.xml配置把主程序打包生成jar包或者war包中。

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

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

7,mvn test-compile :编译测试程序。

8,mvn package 打包

9,mvn delpoy 部署主程序,按照坐标保存到本地仓库中。

注意:执行以上命令必须在命令行中执行。

单元测试

简介:

用的是Junit,junit是一个专门测试的框架(工具),测试的是类中的方法,每一个方法都是独立测试的。方法是测试的基本单位(单元)。

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

使用步骤:
  • 加入依赖,在pom.xml文件中加入单元测试依赖

    •  <!--单元测试-->
       <dependency>
       	<groupid>junit</groupid>
           <artifactid>junit</artifactid>
           <version>4.11</version>
           <scope>test</scope>
       </dependency>
      
  • 在maven项目中的src-test-java包下,添加测试程序。

    • 推荐的创建类和方法的提示:
      1. 测试类的名称:Test+要测试的类名
      2. 测试的方法名称:Test+方法名称
  • 例如要测试HelloWorld

  • 创建测试类TestHelloWorld

  •  @Test
     public static void TestHelloWorld(){
         public void TestHello();
         
     }
    

打包文件只包含src-main目录下的东西,不包含Test目录下的东西。安装到仓库中,就可以使用仓库中的jar包了。

三,Maven在idea中的应用***

  1. 结合IDEA和Maven创建Maven项目

    在idea中设置Maven,让Maven和idea结合使用。idea中内置了Maven,一般不使用内置的,使用自己安装的Maven。需要去覆盖,idea中默认的设置

    让idea直到Maven的安装路径。

​ 2.配置的入口:

  1. ​ 配置当前工程的设置。File–settings—maven—-build,Excution,Desployment,—–buildTools—-maven

    Maven Home directory :maven的安装目录

    User Setting File : maven安装目录的cofn/setting.xml文件

    Local Rrpository : 本机仓库的目录位置

    –Build Tools–Maven–Runner

    VM Options : archetypeCatalog=internal

    JRE:你的项目JDK

    archetypeCatalog=internal,Maven项目创建时,会联网下载模板文件,比较大,使用archetypeCatalog=internal,不用下载,创建Maven项目的速度块;

  2. 配置以后新建工程的设置 :file–otherSetting–maven—setting for new project—……

  3. 插件管理

  4. 可以不要的相关。

四,依赖管理

maven是管理依赖的工具,使用依赖将jar包导入到项目中。不需要将jar包拷入项目中。

单元测试的依赖方式,这是用的最多的一个依赖。

仓库是存放jar包的,maven的插件等等。

本地仓库:可以安装maven仓库,设置路径的时候不要有中文路径,不要有空格。

如果本地仓库中有的话,就直接使用,如果没有的话会到中央仓库下载maven。中央仓库最权威的网址百度一下一大堆。还可以到阿里巴巴的maven仓库下载内容。还有就是公司的局域网内部使用的maven仓库。还有中央仓库的镜像,中央仓库比较慢的时候可以连接中央仓库镜像来下载相关的插件。

主要就是的坐标,约定目录结构,命令。重点掌握这几个即可。可以去官网查询它的内容。

依赖范围:控制依赖的范围:compile,test,provided。

表示依赖的使用顺序,maven构建项目:清理,编译,测试,打包,安装,部署过程。

provided:当程序在编译,测试的时候需要用这个jar包,但是打包的时候就不需要将这个打包进去了。

没有提供servlet相关的jar包,这个pom文件中提供了这个jar包,所以不需要我们再自己添加。这个方便了开发的步骤等。轻装上阵,不需要自己额外的添加任何jar包。所以比较方便。

查官方文档;项目经理指定功能版本。

设置maven的常用属性

maven的全局变量

自定义属性:1,再通过自定义标签声明变量(标签名就是变量名)

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

自定义全局变量一般是i当以依赖的版本号,当你的项目重要使用多个相同的版本号,先使用全局变量定义,在使用${变量名}来使用这个变量。

资源插件

<build>
    <!--资源插件-->
    <resources>
      <resource>
        <directory>src\main\java</directory>
        <includes>
          <include>**\*.properties</include>
          <include>**\*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
      <resource>
        <directory>src\main\resources</directory>
        <includes>
          <include>**\*.properties</include>
          <include>**\*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>

作用:mybatis课程中会用到这个作用

五,Maven常用设置

​ 1,默认没有使用resources的时候,maven执行编译代码时,会把src/main/resources目录中的问价你拷贝到target/classes文件夹中。

2,对于src/main/java文件夹下面的非java文件不会处理的,不会拷贝到另一个文件夹中。

3,程序有需要把一些文件放到src/main/java目录中,当我们再执行java程序的时候,需要用到src/main/java目录中的文件。需要告诉maven再mvn compile src/main/java目录下的程序中,需要把文件处理并拷贝到同一目录下。此时就需要在中添加resource路径。

依赖范围:compile默认,在构建编译,打包,部署都需要

​ test:只在测试阶段需要

​ provided:在部署时,由服务器提供,项目本身不需要自带

maven自定义变量和自己的属性。maven插件,maven资源插件。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NoSuchManException

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值