maven 技术总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven 技术总结相关的知识,希望对你有一定的参考价值。
1.版本统一控制
在 properties中配置一个参数,在添加依赖时 通过 version标签 限定版本
<properties>
<org.springframework.version>3.2.8.RELEASE</org.springframework.version>
<!-- <org.springframework.version>4.0.2.RELEASE</org.springframework.version> -->
</properties>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version> <scope>runtime</scope>
</dependency>
2.scope
Maven编译代码时需要使用classpath,但classpath不止一种,而是:
编译classpath
测试classpath
运行classpath
Maven会根据需要使用不同的classpath,而scope可以用来控制依赖与这三种classpath之间的关系。
compile:默认使用该项,对三种classpath都有效。
test:仅对测试classpath有效,如上面的Junit。
provided:对编译和测试classpath有效,比如开头贴出的servlet-api的依赖,会在运行时由app server提供,Maven不可以重复引入。
runtime:对测试和运行classpath有效,编译时无效。
system:对编译和测试classpath有效,但必须通过systemPath显示指定依赖文件的位置,可以使用系统环境变量。
import:不针对任何一种classpath,该项用于导入其他pom中的dependencyManagement元素。
通常会使用前三种。
scope不仅用来控制依赖与classpath之间的关系,还会对依赖的传递性产生影响。
传递性依赖? 比如A依赖B,B依赖C,则A对于B是直接依赖,对于C是传递性依赖。
A对B、B对C的依赖范围决定了A对C的依赖范围。
以上是关于maven 技术总结的主要内容,如果未能解决你的问题,请参考以下文章
Java Maven打包总结(Jenkins多模块编译部署)
IDEA中MyBatis Migrations Maven plugin 使用总结