Maven入门简单整理

常用指令

查询maven版本 mvn -v
编译 mvn clean compile
测试 mvn clean test
打包 mvn clean package
安装到本地仓库 mvn clean install

Maven仓库

Maven仓库用来存放Maven管理的所有Jar包。分为:本地仓库 和 中央仓库。

  • 本地仓库:Maven本地的Jar包仓库。
  • 中央仓库: Maven官方提供的远程仓库。

当项目编译时,Maven首先从本地仓库中寻找项目所需的Jar包,若本地仓库没有,再到Maven的中央仓库下载所需Jar包

坐标

在Maven中,坐标是Jar包的唯一标识,Maven通过坐标在仓库中找到项目所需的Jar包。

如下代码中,groupId和artifactId构成了一个Jar包的坐标。

<dependency>
    <groupId>cn.missbe.web.search</groupId>
    <artifactId>resource-search</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
</dependency>
  • groupId:所需Jar包的项目名
  • artifactId:所需Jar包的模块名
  • version:所需Jar包的版本号

传递依赖 与 排除依赖

  • 传递依赖:如果我们的项目引用了一个Jar包,而该Jar包又引用了其他Jar包,那么在默认情况下项目编译时,Maven会把直接引用和简洁引用的Jar包都下载到本地。
  • 排除依赖:如果我们只想下载直接引用的Jar包,那么需要在pom.xml中做如下配置:(将需要排除的Jar包的坐标写在中)
<exclusions>
    <exclusion>
        <groupId>cn.missbe.web.search</groupId>
        <artifactId>resource-search</artifactId>
        <packaging>pom</packaging>
        <version>1.0-SNAPSHOT</version>
    </exclusion>
</exclusions>

依赖范围< scope >

在项目发布过程中,帮助决定哪些构件被包括进来。欲知详情请参考依赖机制。

  • compile :默认范围,用于编译
  • provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath
  • runtime: 在执行时需要使用
  • test: 用于test任务时使用
  • system: 需要外在提供相应的元素。通过systemPath来取得
  • systemPath: 仅用于范围为system。提供相应的路径
  • optional: 当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用

依赖冲突

若项目中多个Jar同时引用了相同的Jar时,会产生依赖冲突,但Maven采用了两种避免冲突的策略,因此在Maven中是不存在依赖冲突的。

短路优先

本项目——>A.jar——>B.jar——>X.jar
本项目——>C.jar——>X.jar
  1. 本项目——>A.jar——>B.jar——>X.jar
  2. 本项目——>C.jar——>X.jar

若本项目引用了A.jar,A.jar又引用了B.jar,B.jar又引用了X.jar,并且C.jar也引用了X.jar。

在此时,Maven只会引用引用路径最短的Jar。

  • 声明优先

若引用路径长度相同时,在pom.xml中谁先被声明,就使用谁。

聚合

什么是聚合?

将多个项目同时运行就称为聚合。

如何实现聚合?

只需在pom中作如下配置即可实现聚合。

需要创建一个额外的模块,然后通过该模块构建整个项目所有模块。

他需要有自己的POM,其中需添加元素< modules >

<modules>
    <module>web-connection-pool</module>
    <module>web-java-crawler</module>
</modules>

示例

继承

  1. 什么是继承?

在聚合多个项目时,如果这些被聚合的项目中需要引入相同的Jar,那么可以将这些Jar写入父pom中,各个子项目继承该pom即可。

  1. 如何实现继承?
  • 父pom配置:将需要继承的Jar包的坐标放入标签即可。父类模块的packaging为pom,打包类型也为pom。本身不包含除了pom之外的项目文件(src/main/java之类)。
    在这里插入图片描述

  • 子pom配置:使用< parent >申明父pom
    在这里插入图片描述

插件管理

<pluginManagement>
	<plugins>
		<plugin>
		...
		</plugin>
	</plugins>
</pluginManagement>

裁剪反应堆

mvn -h

测试

跳过测试

mvn package -DskipTests

动态指定测试用例

mvn test -Dtest=测试用例类名(*可用于匹配)
mvn test -Dtest=测试用例类名1,测试用例类名2

使用Maven构建Web项目

待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值