maven常用配置

1、Maven坐标唯一标识一个依赖构件,它包含以下元素:

1)groupId:定义该Maven项目隶属的实际项目 *

2)artifactId:定义实际项目中的一个Maven项目(模块) *

3)version:定义Maven项目当前所属的版本 *

4)packaging:项目打包方式,包括:jar、war、pom等(可选,默认为jar)

5)classifier:帮助定义构建输出的一些附属构件,如该项目会通过使用一些插件生成如:javadoc.jar和java-sources.jar,它俩就是这两个附属构件的classifier,(不能直接定义,因为由附属插件生成)

2、propertyies: 定义一些属性供下面引用
例如:

   <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<!-- spring版本号 -->
	<spring.version>4.2.1.RELEASE</spring.version>
  </properties>
  <dependencies>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-core</artifactId>
		<version>${spring.version}</version>
	</dependency>
   <dependencies/>

3、dependency

  1)groupId
  
  2)artifactId
  
  3)version
  
  4)type:依赖的类型,对应于项目坐标定义的packaging(默认为Jar)
  
  5)scope:依赖的范围
  
  6)opetional:标记依赖是否可选

  7)exclusions:用来排除传递性依赖

4、依赖范围:用来控制依赖与三种classpath的关系(编绎、测试、运行)

  1)compile:编绎依赖范围,默认,三种classpath都有效,例如spring-core

  2)test:测试依赖范围,只在测试classpath有效,例如junit

  3)provided:已提供依赖范围,只在编绎和测试classpath有
	 
	 效,例如servlet-api,因为运行时容器会提供
	 
  4)runtime:运行时依赖范围,只在测试和运行classpath有效,

	例如jdbc驱动,因为编绎时只需要jdk的jdbc接口,在测

	试和运行时才真正需要驱动

  5)system:系统依赖范围,和provided一样,需要通过

	systemPath元素显示地指定依赖位置,可以引用环境变

	量,但是不推荐使用(往往与本地依赖绑定,移植性不好)

  6)import:导入依赖范围,该依赖不会对三种classpath产生实
  
	际的影响,通常和dependencyManagement结合使用

5、传递性依赖与传递性依赖范围:

  定义:如果A项目依赖于B依赖,而B依赖又依赖于C依赖,那么当你在项目

  A中导入B依赖时,maven会自动将C依赖导入

  第一直接依赖的范围和第二直接依赖的范围决定了传递依赖的范围

  如下图:最左边一行表示第一直接依赖范围,最上面一行表示第二直

  接依赖范围,中间交叉部分表示传递依赖范围

  ![传递依赖](https://img-blog.youkuaiyun.com/20150918173626753)

6、依赖调解:当项目A有多个依赖路径时,原则是路径最近者优先,当

路径相等的情况下“第一声明者优先”

7、可选依赖:项目A依赖于项目B,项目B依赖于项目C和D,那么C和D

B对于C和D的依赖都是可选依赖,都不会传递给A,原因:C和D可能是互

斥的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值