当前位置: 首页 > news >正文

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>
http://www.lryc.cn/news/253973.html

相关文章:

  • 【动手学深度学习】(六)权重衰退
  • 动手学习深度学习-跟李沐学AI-自学笔记(3)
  • 3.2 Puppet 和 Chef 的比较与应用
  • promise使用示例
  • 一起学docker系列之十四Dockerfile微服务实践
  • Qt Creator 11.0.3同时使用Qt6.5和Qt5.14.2
  • Python中字符串列表的相互转换详解
  • 09、pytest多种调用方式
  • 分布式锁常见实现方案
  • 26、pytest使用allure解读
  • Uncle Maker: (Time)Stamping Out The Competition in Ethereum
  • 浅谈可重入与线程安全
  • 深入理解TDD(测试驱动开发):提升代码质量的利器
  • pyqt5使用pyqtgraph实现动态热力图
  • 【android开发-16】android中文件和sharedpreferences数据存储详解
  • 《当代家庭教育》期刊论文投稿发表简介
  • 【操作教程】如何将外省医保转入广州市区(医保转移接续手续办理)?
  • 【分布式系统学习】CAP原理详解
  • 【聚类】K-modes和K-prototypes——适合离散数据的聚类方法
  • Python-炸弹人【附完整源码】
  • [英语学习][5][Word Power Made Easy]的精读与翻译优化
  • Apache Doris 详细教程(一)
  • 【Vue3从入门到项目实现】RuoYi-Vue3若依框架前端学习——登录页面
  • win11 关闭快速启动,解决重启后部分应用没有关闭的问题
  • python爬虫-某公开数据网站实例小记
  • 还记得当初自己为什么选择计算机?
  • “数”说新语向未来 | GBASE南大通用2023媒体交流会成功举办
  • 每天一点python——day88
  • xShell快捷键
  • OkGo导入失败解决办法