maven的package和install命令有什么区别以及Maven常用命令与GAV坐标与Maven依赖范围与Maven依赖传递与依赖排除与统一声明版本号

本文主要是介绍maven的package和install命令有什么区别以及Maven常用命令与GAV坐标与Maven依赖范围与Maven依赖传递与依赖排除与统一声明版本号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

maven的package和install命令有什么区别以及Maven常用命令与GAV坐标与Maven依赖范围与Maven依赖传递与依赖排除与统一声明版本号

一: maven的package和install命令有什么区别

一般都与clean命令结合使用

mvn package 
生成target目录,编译、测试代码,生成测试报告,生成jar/war文件
mvn clean install 
运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用

二: Maven常用命令

mvn -version/-v 显示版本信息mvn clean 清空生成的文件mvn compile 编译mvn test 编译并测试mvn package 生成target目录,编译、测试代码,生成测试报告,生成jar/war文件mvn site 生成项目相关信息的网站mvn clean compile 表示先运行清理之后运行编译,会将代码编译到target文件夹中mvn clean package 运行清理和打包mvn clean install 运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用mvn clean deploy 运行清理和发布

三: Maven 的GAV坐标

我们自己的 Maven 工程必须执行安装操作才会进入仓库。安装的命令是:mvn install

Maven 的坐标
使用如下三个向量在 Maven 的仓库中唯一的确定一个Maven工程。
(也唯一确定依赖的jar包)

groupid:公司或组织的域名倒序+当前项目名称
artifactId:当前项目的模块名称
version:当前模块的版本

举例

  <groupId>com.test.your</groupId><artifactId>testJar</artifactId><version>0.0.1-SNAPSHOT</version>

如何通过坐标到仓库中查找 jar 包?

将 gav 三个向量连起来
com.test.your+testJar+0.0.1-SNAPSHOT

以连起来的字符串作为目录结构到仓库中查找

com/test/your/testJar/0.0.1-SNAPSHOT/testJar-0.0.1-SNAPSHOT.jar

四: Maven依赖范围

有时依赖信息中除了目标 jar 包的坐标还有一个 scope 设置,这就是依赖的范围。
依赖的范围有几个可选值,常用的有:compile、test、provided 三个,
当然还有不常用的 runtime、system…

compile:默认范围,编译测试运行都有效provided:在编译和测试时有效runtime:在测试和运行时有效test:只在测试时有效system:在编译和测试时有效,与本机系统关联,可移植性差

常用依赖范围有效性总结

			compile			test	provided
主程序		√				×		√
测试程序		√				√		√
参与部署		√				×		×

4.1 依赖传递性

A 依赖 B,B 依赖 C,A 能否使用 C 呢?
那要看 B 依赖 C 的范围是不是 compile,
如果是则可用,否则不可用。

4.2 依赖的排除

如果我们在当前工程中引入了一个依赖是 A,
而 A 又依赖了 B,那么 Maven 会自动将 A 依赖的 B 引入当 前工程,
但是个别情况下 B 有可能是一个不稳定版,
或对当前工程有不良影响。这时我们可以在引入 A 的时候将 B 排除。

<dependency><groupId>com.test.your</groupId><artifactId>testJar</artifactId><version>0.0.1-SNAPSHOT</version><scope>compile</scope><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions>
</dependency>

4.3 统一声明版本号

统一管理所依赖 jar 包的版本,对
同一个框架的一组 jar 包最好使用相同的版本。
为了方便升级框架,
可以将 jar 包的版本信息统一提取出来

举例如下:

<properties><starfish.spring.version>4.1.1.RELEASE</starfish.spring.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

引用上面声明的版本号

<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${starfish.spring.version}</version><scope>compile</scope>
</dependency>

这篇关于maven的package和install命令有什么区别以及Maven常用命令与GAV坐标与Maven依赖范围与Maven依赖传递与依赖排除与统一声明版本号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/436566

相关文章

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py