码迷,mamicode.com
首页 > 其他好文 > 详细

maven 技术总结

时间:2017-11-28 15:35:49      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:release   pil   通过   framework   app   位置   标签   关系   需要   

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 技术总结

标签:release   pil   通过   framework   app   位置   标签   关系   需要   

原文地址:http://www.cnblogs.com/lukelook/p/7909851.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!