Maven基础

文章目录

一、几个基本概念理解​​​​​​​

二、依赖

三、项目的打包类型

四、项目的继承关系和聚合关系

五、插件配置

六、maven命令



前言

        maven是apache 下的一个开源项目管理软件;可以实现编译、打包等功能,也可以管理项目与项目之间的关系(依赖、继承、聚合)


一、几个基本概念理解

1、(POM)项目对象模型 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,xml通过一小段描述信息来管理项目的依赖、构建、报告和文档等等。

2、坐标:maven寻找构件的依据,每个存在于maven中的依赖都必须具有唯一的坐标。通过groupIdartifactIdversionpackagingclassifier几个标签来进行定义。

        groupId:往往定义项目的名称,通常格式为:org.组织名称.项目名称;

        artifactId:项目模块名称,即我们通常说的project工程名称,是具体的应用名称;

        version:当前项目所处的版本;

        packaging: 项目的打包方式;非必填,默认为jar方式;

        classifier:定义附属构建;项目除了可以生成主构件XXX.jar外,还可以通过一些插件生成XXX-sources.jar,XXX-doc.jar等附属构件,分别以源码的形式打包和文档的形式打包来做项目呈现;

3、仓库:

        本地仓库:

        远程仓库(中央仓库、局域网私服仓库):

4、父子工程和聚合工程:

        一个父模块下面多个子模块,子模块与父模块为继承关系,众多子模块互相之间为聚合关系。

二、依赖

1. 依赖的传递性

        直白解释:

        项目一依赖了某个jar包;

        项目二依赖了项目一,则项目二会自动也依赖了项目一依赖的jar包;        

2.maven解决依赖冲突默认的两个原则

依赖冲突:项目中有存在多处对同一依赖的不同版本的引用,即坐标相同,版本号不同;

两个原则:

   第一原则:最短路径原则

   第二原则:最先声明原则

        在pom中依赖声明的顺序靠前的依赖将被使用;

        当第一原则不适用(冲突依赖的最短路径一致)的情况下,适用第二原则。第二原则是maven2.0.9定义的,目的是为了尽可能的避免构建的不确定性,在此版本之前第一原则不适用的场景下的依赖是不确定的。

3、依赖的有效范围

        compile(默认使用该依赖范围):对于编译 测试 运行三种的classpath都有效

        provided:于编译和测试classpath有效,但在运行时无效。典型的例子是servlet-api,编译和测试项目的时候需要该依赖,但在运行的时候,由于容器已经提供,就不需要maven重复地引入一遍。打包的时候可以不用包进去,别的设施会提供。

        runtime:运行时依赖范围。使用此依赖范围的maven依赖,对于测试和运行classpath有效,但在编译主代码时无效。典型的例子是JDBC驱动实现,项目主代码的编译只需要jdk提供的jdbc的接口,只有在执行测试或者运行测试的时候才需要实现上述接口的jdbc的驱动。

        System:

        test:只对于测试的classpath有效;

        import:导入依赖范围。该依赖范围不会对三种classpath产生实际的影响。只有在dependencyManagement下才有效果。父子工程中,父工程专门用作版本管理时,如果指定了scope=import,则子工程不可以再自行定义依赖的版本,必须使用父工程指定的版本号;(上图为父工程配置,下图为子工程配置),dependencyManagement标签表示只是声明依赖,并不实际引入。

三、项目的打包类型

如:<packaging>jar</ packaging>

pom ---------> 父类型都为pom类型

jar ---------> 内部调用或者是作服务使用(默认为jar)

war ---------> 需要部署的项目

四、项目的继承关系和聚合关系

        一个父模块下面多个子模块,子模块与父模块为继承关系,众多子模块互相之间为聚合关系(上图为父模块配置,下图为子模块配置)

五、插件配置

通过三个常用插件的使用来举例:

1)编译器插件

当子模块使用的jdk版本不是maven的settings.xml文件中指定的jdk版本时,可以通过pom文件中以下配置指定自身特有的编译器版本,而不再使用settings.xml中配置的全局编译器版本;

2资源拷贝插件

maven项目build打包的时候,默认会把resources下面的配置文件打包到classes目录下面,但是如果想要把java下面的配置文件也打包到classes目录下面,可以添加资源拷贝插件并指定打包目录和文件;

3)Tomcat插件

六、maven命令

maven是通过一系列命令来完成功能的,但是IDE都有对应的可视化界面如下图所示:

clean:清除编译文件和打包文件

compile:生成编译文件,相当于javac命令

package:生成编译文件并生成打包文件,相当于java命令

install:生成编译文件和打包文件,相当于java命令;

deploy:如果想把打包文件放到私服仓库,需要执行deploy命令,用到的不多;


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hiker帝国

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

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

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

打赏作者

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

抵扣说明:

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

余额充值