xiaohuihui
for me

Maven

2021-01-11 13:53:41
Word count: 1.9k | Reading time: 7min

Maven

Maven简介

传统开发项目的问题

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

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

  3. 需要管理jar的版本。

  4. 管理jar文件之间的依赖,如果项目要使用a.jar ,则需要b.jar里面的类。必须首先获取到b.jar才可以,然后才能使用a.jar。

    a.jar需要b.jar这个关系叫做依赖,或者你的项目中要使用mysql的驱动,也可以叫做项目依赖mysql驱动。

如果这样开发就会变得很繁琐,准备工作也要做很久。

maven的用处

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

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

  1. 清理:把之前项目编译的东西删除掉,为新编译代码做准备。
  2. 编译:把程序源代码编译为可执行代码,java文件==>class文件,批量的把java文件编译成class文件。
  3. 测试:maven可以执行测试程序代码,验证你的功能是否正确。批量的执行多个测试代码,同时测试很多功能。
  4. 报告:生成测试结果的文件,查看测试是否通过。
  5. 打包:把项目中所有的class文件,配置文件等所有资源放到一个压缩文件中。这个压缩文件就是项目的结果文件,通常java程序,压缩文件都是jar为扩展名的。对于web应用,压缩文件扩展名是.war文件。
  6. 安装:把打包的文件按转到本机仓库。
  7. 部署:把程序安装好可以执行。

Maven核心概念

核心概念:

  1. POM:一个文件,名称是pom.xml,pom翻译过来叫做项目对象模型。
  2. 约定的目录结构: maven项目的目录和文件的位置都是规定的。
  3. 坐标: 是一个唯一的字符串,用来表示资源的。
    1. groupId:组织名
    2. artifactId:模块名
    3. version:版本号
  4. 依赖管理:管理项目使用的jar文件。
  5. 仓库管理:资源存放的位置。
  6. 生命周期: maven工具构建项目的过程。
  7. 插件和目标:执行maven构建时用的工具。
  8. 继承
  9. 聚合
maven工具安装和配置

在系统变量中配置:MAVEN_HONE = D:\maven\apache-maven-3.6.3,在把MAVEN_HOME加入到path中:%MAVEN_HOME%\bin即可。

在命令行输入mvn --version查看是否配置成功。

Maven工程约定目录结构

image-20210111151549835

Hello:根目录,项目名称

main:放主程序java代码和配置文件

main/java:程序包和包中的java文件

main/resources:主程序的配置文件

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

test/java:测试程序包和包中的java文件

test/resources:测试java程序中要使用的配置文件

仓库

仓库分类:

  1. 本地仓库:存放jar包的文件夹
  2. 远程仓库:需要联网才能访问的仓库。
    1. 中央仓库:https://repo.maven.apache.org(共享)
    2. 中央仓库镜像:即中央仓库的备份,在每个州都有,便于可以快速访问。

设置本机仓库

  1. 修改maven配置文件settings.xml
  2. 修改<localReposity>指定仓库目录
pom文件

项目对象模型,是一个pom.xml文件。

  1. 坐标:唯一值

    公司域名倒写

    自定义项目名称(模块名称)

    自定义版本号

  2. packaging:

  3. 依赖:dependencies和dependency

    mysql

    mysql-connector-java

    5.1.9

  4. properties:设置属性。

  5. build:maven在进行项目的构建时的相关配置信息,比如设置编译插件的jdk版本。

maven常用命令

​ Maven提供一个项目构建的模型,把编译、测试、打包、部署等都对应成一个个的生命周期阶段,并对每一个阶段都提供相应的命令。

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

  • mvn compile:编译主程序(会在当前目录下生成一个target,里边存放编译主程序之后生成的字节码文件)

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

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

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

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

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

执行以上命令必须在命令行进入pom.xml所在目录

单元测试

junit:专门的测试框架,测试的是类中的方法,每一个方法都是独立测试的,方法是测试的基本单位。

测试过程:

  1. 引入依赖
  2. 在src/test/java目录下,创建测试程序。类名格式:Test+测试的类名;方法名格式:Test+方法名称
1
2
3
4
5
6
7
8
9
10
public void testAdd(){

}
/*
其中testAdd是测试方法,定义规则是
1.方法是public修饰的
2.方法没有返回值
3.方法名称是自定义的,推荐是Test + 方法名称
4.在方法上加上注解@Test
*/

Maven在Idea中的应用

Idea集成Maven

idea中已经设置了maven,但是我们一般不适用内置的,因为用内置修改maven的设置不方便,所以我们使用自己安装的maven去覆盖idea中默认的maven,让idea指定maven安装位置等信息。

第一步:

配置入口:file=>Settings

image-20210112162725726

修改之后:

image-20210112163352252

第二步:

如果下面那种不行,就用:-DarchetypeCatalog=internal

image-20210112163729052

Idea创建Maven版java工程

第一步

image-20210112165326714

第二步

image-20210112165446664

第三步

image-20210112165957768

第四步:创建resources文件

image-20210112172824813

image-20210112172837918

Idea创建Maven版Web工程

image-20210113140507014

下面的步骤跟上面一样。

Idea导入Maven工程

第一步:

image-20210113144630216

第二步:

image-20210113144650487

第三步:

image-20210113144828207

依赖范围

scope的值有三种:compile,test,provided。默认是compile。

scope表示依赖的范围,也就是在maven构建项目的那些阶段中起作用。

此处可以看到junit的依赖范围是在测试阶段。

image-20210113145259398

Maven常用设置

  1. maven的属性设置:<properties>标签用来设置maven的常用属性。
  2. maven的全局变量:
    1. <properties>通过自定义标签声明变量(标签名字就是变量名字)
    2. pom.xml文件中的其他位置,使用${标签名}的方式去引用变量的值

image-20210113154017317

  1. 资源插件

    1.maven 默认只把 src/main/resources 里面的.java 文件进行编译到 classes 中

    2.如果希望 src/main/java 下的文件也被编辑到 classes 中,在 pom.xml 中配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <resources>
    <resource>
    <directory>src/main/java</directory>
    <includes>
    <include>**/*.xml</include>
    </includes>
    </resource>
    <resource>
    <directory>src/main/resources</directory>
    <includes>
    <include>**/*.xml</include>
    <include>**/*.properties</include>
    </includes>
    </resource>
    </resources>

Author: 小灰灰

Link: http://xhh460.github.io/2021/01/11/Maven/

Copyright: All articles in this blog are licensed.

< PreviousPost
Spring5
NextPost >
自动化测试
CATALOG
  1. 1. Maven
    1. 1.0.1. Maven简介
      1. 1.0.1.1. 传统开发项目的问题
      2. 1.0.1.2. maven的用处
        1. 1.0.1.2.1. 构建项目
    2. 1.0.2. Maven核心概念
      1. 1.0.2.0.1. maven工具安装和配置
      2. 1.0.2.0.2. 仓库
      3. 1.0.2.0.3. pom文件
      4. 1.0.2.0.4. maven常用命令
      5. 1.0.2.0.5. 单元测试
  2. 1.0.3. Maven在Idea中的应用
    1. 1.0.3.1. Idea集成Maven
    2. 1.0.3.2. Idea创建Maven版java工程
    3. 1.0.3.3. Idea创建Maven版Web工程
    4. 1.0.3.4. Idea导入Maven工程
    5. 1.0.3.5. 依赖范围
    6. 1.0.3.6. Maven常用设置