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/434102

相关文章

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

GORM中Model和Table的区别及使用

《GORM中Model和Table的区别及使用》Model和Table是两种与数据库表交互的核心方法,但它们的用途和行为存在著差异,本文主要介绍了GORM中Model和Table的区别及使用,具有一... 目录1. Model 的作用与特点1.1 核心用途1.2 行为特点1.3 示例China编程代码2. Tab

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

jvm调优常用命令行工具详解

《jvm调优常用命令行工具详解》:本文主要介绍jvm调优常用命令行工具的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一 jinfo命令查看参数1.1 查看jvm参数二 jstack命令2.1 查看现场堆栈信息三 jstat 实时查看堆内存,gc情况3.1

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Spring中@RestController和@Controller的使用及区别

《Spring中@RestController和@Controller的使用及区别》:本文主要介绍Spring中@RestController和@Controller的使用及区别,具有很好的参考价... 目录Spring中@RestController和@Controller使用及区别1. 基本定义2. 使

Qt 中 isHidden 和 isVisible 的区别与使用小结

《Qt中isHidden和isVisible的区别与使用小结》Qt中的isHidden()和isVisible()方法都用于查询组件显示或隐藏状态,然而,它们有很大的区别,了解它们对于正确操... 目录1. 基础概念2. 区别清见3. 实际案例4. 注意事项5. 总结1. 基础概念Qt 中的 isHidd

Spring、Spring Boot、Spring Cloud 的区别与联系分析

《Spring、SpringBoot、SpringCloud的区别与联系分析》Spring、SpringBoot和SpringCloud是Java开发中常用的框架,分别针对企业级应用开发、快速开... 目录1. Spring 框架2. Spring Boot3. Spring Cloud总结1. Sprin

Linux find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间