首页>>后端>>java->Maven 笔记 : 基础手册

Maven 笔记 : 基础手册

时间:2023-12-06 本站 点击:0

首先分享之前的所有文章 ,  欢迎点赞收藏转发三连下次一定 >>>> ???  文章合集 : ?    https://juejin.cn/post/6941642435189538824 Github :  ?   https://github.com/black-antCASE 备份 :  ?  https://gitee.com/antblack/case

一 . 前言

Maven 是我们常用的依赖管理工具 ,这些年用的也比较多 , 攒了不少笔记 , 整理了一下分享出来 ,也是对之前版图的完善

Maven 的基础概念推荐看 Maven 权威指南 , 写的很详 . 所以这一篇主要从应用的角度来看各种用法 , 不涉及太多介绍的概念.

二 . 常用命令

> 打包mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true// 修改版本号 : versions:set -DnewVersion=5.0.0.1 clean install -f pom.xml -DskipTests    // mvn clean install -Dmaven.test.failure.ignore=true sonar:sonar    // mvn clean install -Dmaven.test.failure.ignore=true sonar:sonar -Dsonar.projectKey=proKey -Dsonar.host.url=http://127.0.0.1:8080 -Dsonar.login=dbcbaf5easdasdasdasdasdb42c60cb99    // 跳过 JavaDoc > mvn clean install -Dmaven.javadoc.skip=true// 跳过 CheckStyle> mvn [target] -Dcheckstyle.skip// --> 跳过 license : mvn clean install -DskipTests license:format//// mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dcheckstyle.skip -DskipTests=truemvn install -Dmaven.test.skip=true -Dmaven.javadoc.skip=truemvn install -X -Dmaven.test.skip=true -Dmaven.javadoc.skip=truemvn assembly:assembly// 打包打入指定文件jar -uvf0 test-server-5.2.0.jar BOOT-INF/lib/test-provisioning-java-2.1.2.jar// 其他生命周期相关命令mvn clean --> 清空新的项目mvn compile --> 编译源代码mvn test-compile --> 编译集成测试mvn package --> 构建项目mvn test // --> 打包项目并且部署到本地资源库mvn installmvn install:install-file -Dfile=algs4.jarmvn install:install-file -Dfile=algs4.jar -DgroupId=lib.algs4 -DartifactId=algs4 -Dversion=4.0 -Dpackaging=jar    // --> 打包并且上传到私服mvn deploymvn clean deploy -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dcheckstyle.skip -DskipTests=true// --> 本地加入jarmvn install:install-file  -DgroupId=包名  -DartifactId=项目名  -Dversion=版本号  -Dpackaging=jar  -Dfile=jar文件所在路径  // --> 下载源码mvn dependency:sources// --> 下载注释 mvn dependency:resolve -Dclassifier=javadoc// --> 部署到Tomcat mvn tomcat:redeploy// --> 跳过测试阶段mvn package -DskipTests// --> 临时性跳过测试代码的编译mvn package -Dmaven.test.skip=true// --> 指定测试类mvn test -Dtest=RandomGeneratorTest// --> 以Random开头,Test结尾的测试类mvn test -Dtest=Random*Test// --> 用逗号分隔指定多个测试用例 mvn test -Dtest=ATest,BTest// --> 运行 checkstylemvn checkstyle:checkstyle// --> 打包本地mvn install:install-file -Dfile=xxx.jar -DgroupId=aaa -DartifactId=bbb -Dversion=1.0.0 -Dpackaging=jar// --> 查看依赖树mvn dependency:tree    mvn -X dependency:tree>tree.txt// --> 查看已解析依赖mvn dependency:list// --> 分析依赖关系mvn dependency:analyze// --> 更新版本 mvn versions:set -DnewVersion=1.0.1-SNAPSHOT  // --> 离线模式 (maven-dependency-plugin)mvn dependency:go-offlinemvn -o verify

三. 基础概念

3.1 Maven pom.xml

<!-- 基本结构 --><!-- --><?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-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"></project>

常用变量

${basedir} 项目根目录${project.build.directory} 构建目录,缺省为target${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}${project.packaging} 打包类型,缺省为jar${project.xxx} 当前pom文件的任意节点的内容

dependency 结构

<!-- 典型的 依赖结构 --><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId>    <type>jar</type>    <scope>compile</scope>    <optional>true</optional>    <exclusions></exclusions></dependency>GroupId / artifactId / version packaging : Maven 项目的打包方式classifier : 用于构建输出附属组件scope : 依赖的范围optional : 标记依赖是否可选exclusions : 用来排除传递性依赖

依赖范围

<!-- dependency 依赖范围 --><SCOPE>    - complie : 会在编译 ,测试 ,允许三个阶段均有效    - test : 该范围在测试的时候才有效     - provided : 编译器 , 测试有效 ,运行时无效    - runtime : 运行时有效 ,编译 测试时无效(例如JDBC)    - system : 等同于 provided , 仅用于手动编辑本地包</SCOPE>

生命周期

validate - 验证项目是否正确,并提供所有必要信息compile - 编译项目的源代码test - 使用合适的单元测试框架测试编译的源代码。这些测试不应要求打包或部署代码package - 获取已编译的代码并将其打包为可分发的格式,例如JAR。verify - 对集成测试结果进行任何检查,以确保满足质量标准install - 将软件包安装到本地存储库中,以便在本地用作其他项目的依赖项deploy - 在构建环境中完成,将最终包复制到远程存储库以与其他开发人员和项目共享。// 补充 : Integration test : 集成测试 , 运行项目的集成测试

Maven 的执行过程

> clean : clean> resource : resource> compiler : compile> resource : testResource> compiler : testCompile

3.2 依赖管理的用法

<dependencyManagement>    <dependencies>        <....>    </dependencies></dependencyManagement><build>    <pluginManagement>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </pluginManagement></build>

3.3 依赖传递

> 传递性依赖 : 当依赖没有声明依赖范围的时候 ,默认是 complie , 当作用域都处在 complie 时期时(即当项目处在编译器时) , 依赖可以传递    - scope 同样可以控制依赖传递的范围 , 当 scope 为 test 或者 provide 时 ,只有这2个时期依赖才会传递> 依赖调节 : 基于传递性依赖 ,导致同一个依赖回重复 , 此时存在依赖调节 , 该操作有以下几个原则:    - 1 路径最近者优先    - 2 第一声明者优先> 排除依赖 : <exclusion>

可选依赖的作用 :

> 可选依赖 : <optional> true    - A - B -C(可选)    - A 依赖 B , B 依赖于 C , 当C 为可选依赖的时候 ,并不是传递到 A    ? 可选依赖应该避免使用 , 只有当一个项目实现了多个特性的时候 ,才需要实现可选依赖<dependency>    <!-- ..-->    <optional>true</optional></dependency>

3.4 Maven 仓库

<!-- 基本结构 --><!-- --><?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-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"></project>0

3.5 Maven Profiles

四 . 常用操作

4.1 使用根路径

<!-- 基本结构 --><!-- --><?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-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"></project>1

4.2 定制本地 jar 包

<!-- 基本结构 --><!-- --><?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-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"></project>2

4.3 依赖本地文件

可以是 lib 文件夹下的 jar 包依赖 , 也可以是指定文件路径下的依赖包

<!-- 基本结构 --><!-- --><?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-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"></project>3

4.4 maven  远程仓库部署 jar

<!-- 基本结构 --><!-- --><?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-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"></project>4

4.5 relativePath 指定路径

<!-- 基本结构 --><!-- --><?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-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"></project>5

4.6 禁用父 Pom 的 Maven 插件

<!-- 基本结构 --><!-- --><?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-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"></project>6

4.7 清空缓存

Maven 会将 jar 包下载到本地中 ,通常的路径如下 :

Windows : C:\Users\

.m2

Mac : /Users/

/.m2

Linux : /home/

/.m2
<!-- 基本结构 --><!-- --><?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-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"></project>7

4.8 Maven log 模式

<!-- 基本结构 --><!-- --><?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-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"></project>8

4.9 Maven 使用不同版本的 JDK

<!-- 基本结构 --><!-- --><?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-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"></project>9

总结

主要是一些场景的用法 , 在微服务化的今天 , 其实项目不会再聚合得那么复杂 , 依赖管理也变得更加简单 .

看完基础后 , 后面就会是生产体验中的纯应用 , 包括依赖的优先级 , Maven插件 ,如何写好一个依赖管理parent等等.

原文:https://juejin.cn/post/7100476941727170567


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/java/15891.html