
Maven
莫迟疑
程序员
展开
-
关于maven的大部分内容都在这里了
原创 2020-12-01 23:44:27 · 111 阅读 · 0 评论 -
如何查看maven插件信息
使用命令:mvn help:describe -Dplugin="插件gav"例如:mvn help:describe -Dplugin="org.apache.maven.plugins:maven-compiler-plugin:3.8.1"如下图:此外,以上命令加上-Ddetail参数可以查看插件更详细的信息,比如可以查看每个插件目标可添加的参数例如:mvn help:describe -Dplugin="org.apache.maven.plugins:maven-compiler-plu原创 2020-11-29 22:44:21 · 1876 阅读 · 0 评论 -
maven怎样跳过测试阶段
使用参数-DskipTests,例如:mvn clean install -DskipTests原创 2020-11-28 02:09:13 · 259 阅读 · 0 评论 -
maven的插件才是真正的执行者
生命周期是抽象定义,生命周期的阶段绑定插件,插件才是真正的执行者。一、插件目标每个插件都可以完成多个任务,每个任务就叫做插件目标。比如maven-clean-plugin插件就有两个插件目标:clean:clean、clean:help,如下图二、插件绑定2.1. 内置绑定maven内置了许多绑定关系,比如compile生命周期绑定了maven-compiler-plugin插件的compile阶段。2.2.自定义绑定我们也可以自定义指定绑定关系,示例如下:这里指定default生命周期原创 2020-11-28 01:51:32 · 252 阅读 · 0 评论 -
通过使用命令分析mvn依赖
通过使用命令:mvn dependency:analyze,可以对项目依赖进行分析,效果如下:分析结果包含两部分:1.Used undeclared dependencies,这下面罗列的是潜在的风险。项目使用了这些依赖,但是它们并没有显式声明,而是通过依赖传递引入到项目中的,那么如果引入这些依赖的直接依赖的版本发生变更,则这些依赖也会发生版本变更,所以需要注意。2.Unused declared dependencies,这下面罗列的是引入到项目但是未被使用到的依赖。但这里有一点需要特别注意的,依原创 2020-11-21 17:44:25 · 1073 阅读 · 0 评论 -
推荐一个idea的mvn插件,可查看整个依赖树
插件为:mvn helper:安装该插件后,可以在idea中查看项目完整依赖树,包括直接依赖、继承依赖、传递性依赖,并支持搜索,效果如下:原创 2020-11-21 16:49:58 · 6048 阅读 · 0 评论 -
如何通过mvn命令查看项目全部依赖
mvn依赖包含直接依赖、继承依赖,以及传递性依赖通过使用命令:mvn dependency:list,可查看以上全部依赖,效果如下:原创 2020-11-21 16:43:36 · 4914 阅读 · 2 评论 -
maven的依赖传递
之所以使用maven来管理依赖,很重要的一个原因就是依赖传递。比如我想引入一个依赖,那么在maven中我只需要引入该依赖本身即可,至于这个依赖它自己的依赖,我则完全不需要考虑。以下分三种情况介绍下依赖传递:1.A依赖B,B依赖C,则通常情况下A也会依赖C。2.A依赖B,B依赖C,如果C的作用域是test,则A不依赖C;或者如果C的作用域是provided,但B的作用域不是provided,则A不依赖C。3.A依赖B,B依赖C,但是C是可选依赖,则A不依赖C(可选依赖使用标签定义,值为boolean类原创 2020-11-21 11:06:24 · 1137 阅读 · 0 评论 -
maven的scope
maven的scope标签用来声明依赖的作用域,包含compile、test、provided、runtime、system和imported。使用示例如下:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope原创 2020-11-21 10:49:24 · 207 阅读 · 0 评论 -
多个不同版本的依赖maven怎样做出取舍
比如A依赖B,B依赖C,C依赖D(1.0);A依赖X,X依赖D(2.0)。那么A最终依赖的是D(1.0)还是D(2.0)呢? 针对这类问题,maven有个专门的处理方式:依赖调解。 依赖调解有两条原则。第一条,就近原则。比如一开始提的问题,因为相对于D(2.0),D(1.0)在依赖树上距离A更远,所以最终maven选择引入的依赖是D(2.0)。那么如果两个不同版本的依赖在依赖树上的距离A同样远,又该怎么办呢?这里就引入了依赖调解的第二条原则,依赖树上深度相同,则引入先声明的依赖。就比如A依赖B,原创 2020-11-17 22:05:04 · 1565 阅读 · 0 评论 -
怎样覆盖父pom的某个依赖的版本?
情景一: A-pom继承B-pom,B-pom依赖xx。A-pom想覆盖xx的版本号,直接在A-pom中重新引入xx并定义新的版本号即可。情景二: A-pom继承B-pom,B-pom继承C-pom,C-pom依赖xx。A-pom想覆盖xx的版本号,有两种方式。第一种方式是直接在A-pom中重新引入xx并定义新的版本号。第二种方式是在B-pom中重新引入xx。这一个引入可以定义在<dependencies></dependencies>,也可以定义在<depen原创 2020-11-04 10:32:09 · 11453 阅读 · 0 评论 -
maven的modules标签作用
项目A下有一个pom.xml。项目A下有两个module,每个module中有自己的pom.xml。在项目A的pom中加入<modules>标签,将两个module加入其中。在构建这个项目的时候,不需要深入每个module去单独构建,而只是在项目A下的pom.xml构建,就会完成对两个module的构建。如果项目下多module,modules标签的优势将更加明显。...原创 2019-08-30 16:05:41 · 10689 阅读 · 0 评论 -
dependencyManagement和dependencies的区别
在maven中,依赖可以直接定义在<dependencies>内。如:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan...原创 2019-08-29 17:35:41 · 380 阅读 · 0 评论 -
maven设置构建使用的编码格式
本文可以解决maven构建过程中,提示"[WARNING] Using platform encoding (Utf-8 actually) to copy filtered resources, i.e. build is platform dependent!"的问题。这个警告或者类似的警告,是由某个处理纯文本文件的插件发出的,这个插件没有配置要使用哪种文件编码。所以,maven发出这个警告...原创 2019-08-23 16:49:55 · 924 阅读 · 0 评论 -
maven项目目录层次结构
maven项目约定目录结构如下图所示:主程序代码写在src/main/java中配置文件放在src/main/resources中单元测试程序写在src/test/java中原创 2019-08-21 08:44:45 · 856 阅读 · 0 评论 -
maven坐标
类似于数学中一个坐标在坐标系中唯一定位一个点,maven坐标在仓库中唯一定义一个maven工程。pom中定义的坐标分两类:一类是自己本身的坐标,比如我的maven工程中是这样定义的:另外一类是引入的第三方的maven工程的坐标,比如上图中的junit。坐标的构成:groupId:通常是公司注册的域名的倒写加上项目名,因为一个公司可能有多个项目,所以加上项目名是有必要的artif...原创 2019-08-20 06:45:23 · 533 阅读 · 0 评论 -
maven中央仓库依赖搜索地址
maven项目要引入jar包,需要在pom.xml中加入依赖,比如我要在项目中引入log4j,就需要在pom中做如下配置:<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version...原创 2019-08-19 19:39:20 · 5498 阅读 · 0 评论 -
Maven配置阿里云镜像
Maven默认中央仓库下载jar包在国内可能会很慢,我们可以通过未Maven配置国内阿里云镜像提高jar包下载速度。修改setting.xml,在mirrors节点下加入一个新的mirror节点,配置阿里镜像地址,完整配置如下: <mirrors> <mirror> <id>nexus-aliyun</id> <mirro...原创 2019-08-13 15:41:40 · 19374 阅读 · 2 评论 -
maven生命周期
先写一部分,一点一点完善clean:java项目在构建的过程中,需要将java文件编译成JVM可以执行的class文件,maven的clean功能是清除这些class文件。compile:同clean相反,compile的作用是将java文件编译为class文件。...原创 2019-08-12 09:17:55 · 205 阅读 · 0 评论 -
Maven的setting.xml
setting.xml是Maven的配置文件,比如我最常配置的本地仓库位置、国内中央仓库镜像站地址都是在这里配置的。它分为全局级和用户级两个级别。全局级的位置在maven安装目录下conf目录下,用户级的通常在${user.home}/.m2/settings.xml这个位置。用户级的setting.xml的配置优先级要高于全局级的。比如我在用户级配置了本地仓库地址,那么全局级的就没有用了。...原创 2019-08-12 09:12:45 · 637 阅读 · 0 评论