本文主要是介绍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依赖传递与依赖排除与统一声明版本号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!