Maven自动化构建工具

一、Maven简介

        Maven是apache基金会的开源项目,使用java语言开发。用于项目的自动构建,帮助开发人员做项目代码的编译,测试,打包,安装,部署等工作,以及管理依赖,即项目中需要使用的其他资源,常见的是jar包。类似的自动化构建工具还有:Ant,Gradle(手机端)。

二、Maven的核心概念

      Maven中的概念:POM、约定的目录结构、坐标、依赖管理、仓库管理、生命周期、插件和目标、继承、聚合。

2.1 约定的目录结构

 

Maven的使用方式:

        1.独立使用:创建项目,编译代码,测试程序,打包,部署等等

        2.和idea一起使用:通过idea借助maven,实现编码,测试,打包等等

2.2 pom文件

        POM(Project Object Model)项目对象模型,把一个项目的结构和内容抽象成一个模型,(题外话:dom则是把页面抽象成一个模型)maven通过pom.xml文件实现项目的构建和依赖的管理。

        坐标:确定资源,是资源的唯一标识,在maven中,每个资源都是坐标,坐标值是唯一的,简称gav。其中,groupId是组织名称,代码,公司的标识,常使用公司域名的倒写。artifactId是项目名称,如果groupId中有项目,此时当前的值就是子项目名,项目名是唯一的。version是项目的版本号,三位组成。 如果版本中由-SNAPSHOT,表示快照,不是稳定的版本。搜索坐标的地址:https://mvnrepository.com/

        依赖(dependency):项目中要使用的其他资源(jar)。需要使用maven表示依赖,管理依赖,通过使用dependency和gav一起完成依赖的使用。需要在pom.xml文件中,使用dependencies和dependency,还有gav完成依赖的说明。

<dependencies>

    <!-- 日志依赖 -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <veision>1.2.17</veision>
    <dependency>

    <!-- MySQL驱动,对应一个jar包,maven会根据gav坐标下载对应jar包-->
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.31</version>
    </dependency>

<dependenies>

         packaging项目打包的类型,有jar,war,ear,pom等等,默认是jar

2.3 仓库

maven的仓库存放的是:

        1.maven工具自己的jar包

        2.第三方的其他jar,比如项目中要使用mysql驱动

        3.自己写的程序,可以打包为jar,存放到仓库。

 仓库的分类:

1.本地仓库:位于你自己的计算机,它是磁盘中的某个目录。默认路径是你登录操作系统的账号的目录中/.m2/repository,maven从这个目录找要用的资源。

修改本地仓库的位置:修改maven工具的配置文件(maven的安装路径\conf\setting.xml)

步骤:

1.创建一个目录,作为仓库使用,目录不要有中文和空格,目录不要太深。

2.修改settings.xml文件,指定D:\openrepository这个目录

 把/.m2/repository中的jar包复制到D:\openrepository

 2.4 Maven的生命周期,插件和命令

maven的生命周期:项目构建的各个阶段,包括清理,编译,测试,报告,打包,安装,部署

插件:要完成构建项目的各个阶段,要使用maven的命令,执行命令的功能是通过插件完成的。插件就是jar,一些类。

命令:执行maven功能是由命令发出的。执行以下命令必须在命令行进入pom.xml所在目录

1) mvn clean:清理命令,作用删除以前生成的数据(字节码文件),删除target目录。

        插件:maven-clean-plugin,版本是2.5

2)mvn compile:编译命令,执行的代码编译,把src/main/java目录中的java代码编译为class文件拷贝到target/classes目录。classes是存放类文件的根目录。

插件:maven-compiler-plugin,版本是3.1,编译代码的插件

          maven-resources-plugin,版本是2.6,资源插件,处理文件的,作用是把src/main/resources目录中的文件拷贝target/classes目录中。

3)mvn test-compile:编译命令,编译src/test/java目录中的源文件,把生成的class文件拷贝到target/test-classes目录。同时把src/main/resources目录中的文件拷贝test-classes目录中

插件:maven-compiler-plugin,版本是3.1,编译代码的插件

          maven-resources-plugin,版本是2.6,资源插件,处理文件的。

4)mvn test:(单元测试)测试命令,作用执行test-classes目录的程序,测试src/main/java目录中的主程序代码是否符合要求。测试完会在target目录下生成surefire-reports测试报告。

插件:maven-surefire-plugin,版本2.12.4

5)mvn package:打包(通常之前会做清理mvn clean package),作用是把项目中的资源class文件和配置文件都放在一个压缩文件中,默认压缩文件是jar类型的。web应用是war类型,扩展是jar,war的。

插件:maven-jar-plugin,版本2.4,执行打包处理,生成一个jar扩展的文件,放在target目录下。生成的文件是artifactId-version.packaging组成的jar文件。打包的文件中包含的是src/main目录中的的所有生成的class文件和配置文件,和test无关。

6)mvn install:把生成的打包文件安装到maven仓库

        插件:maven-install-plugin,版本2.4,把生成的jar文件安装到本地仓库

        查看仓库中的jar文件

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

2.5 自定义配置插件

在pom.xml文件中,build标签中设置插件(通常不需要配置,最常用的是以下的配置编译版本插件)

三、Maven和IDEA的集成

3.1 idea中集成maven

idea中有一个自带的maven,我们要让idea使用自己安装的maven。

1)File->Settings->Build,Execution,Deployment->build tools->Maven

 2)博主D盘repository下已有archetype-catalog.xml文件,不用写

 3)(IDEA2018/2019)Other Settings->Settings for New Projects和以上一样的操作

3.2 创建普通的j2se工程(不依赖服务器)

1.创建新Module

 pom.xml:

 <build>标签中的内容是自动生成的插件,如果不需要,可以删掉整个build标签。

 修改目录类型:

 刷新pom文件,重新整理加载依赖:

3.3 创建web项目,加入servlet依赖

 下面步骤和创建j2ee文件类似,修改模块名就ok

 生成的目录:

 添加servlet和jsp依赖:(servlet和tomcat中的文件相同)

 手动创建controller以及HelloServlet:

 在web文件中声明servlet:

 新建index.jsp:

 get请求:

 创建show.jsp:

 把项目发到Tomcat服务器上:

 应用后启动Tomcat,成功后浏览器输入localhost:8080/项目名/文件名

 3.4 导入已有项目

 右上角项目结构->import Module

四、依赖管理

依赖范围:使用scope表示以来的范围

依赖范围表示:这个依赖(jar和里面类)在项目构建的哪个阶段起作用。

依赖范围scope:

        compile:默认,参与构建项目的所有阶段。

        test:测试,在测试阶段使用

        provided:提供者。项目在部署到服务器时,不需要提供这个依赖的jar,而是由服务器这个依赖的jar包(servlet和jsp)

五、常用设置

1)properties里面的配置:

 2)全局变量:多个依赖使用的版本号

注:lastUpdated结尾的jar包是不能用的

 3)使用资源插件

处理的配置文件的信息,maven默认处理配置文件

默认规则:

1.Maven会把src/main/resources目录中的文件,拷贝到target/classes目录下

2.Maven只处理src/main/java目录中的.java文件,把这些java文件编译为class,拷贝到target/classes目录下,不处理其他文件。

3.解决2的问题:添加资源插件:告诉maven把src/main/java目录中的指定扩展名的文件拷贝到target/classes目录中。

在pom.xml文件中

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值