maven学习3

#eclipse中建立maven项目

打开eclipse–》菜单file–》new–>maven project–>【next】–>选择archetype(常用quickstart和webapp)–>【next】–输入groupId artifactId version package信息–>【finish】

如图

  • pom.xml中添加依赖可以从[http://mvnrepository.com/tags/maven]查询

#pom中scope标签

  • compile:编译范围
    compile是默认的范围;如果没有提供一个范围,编译范围依赖在所有的classpath 中可用,同时它 们也会被打包。而且这些dependency会***传递***到依赖的项目中。
  • provided:已提供范围
    provided 明了dependency 由JDK或者容器提供。例如如果开发了一个web 应用,可能在编译 classpath 中需要可用的Servlet API 来编译一个servlet,但是你不会想要在打包好的WAR 中包含这个Servlet API;这Servlet API JAR 由你的应用服务器或者servlet容器提供。已提供范围的依赖在编译classpath (不是运行时)可用。它们不是传递性的也不会被打包
    <dependency>
              <groupId>javax.servlet.jsp</groupId>
              <artifactId>jsp-api</artifactId>
              <version>2.1</version>
              **<scope>provided</scope>**
    </dependency>
  • runtime:运行时范围
    runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。
    比如可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC驱动实现。

  • test:测试范围
    test范围依赖 在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用,也不传递。例如:

<dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>4.10</version>
             **<scope>test</scope>**
   </dependency>
  • system:系统范围(不常用)

#maven依赖特性

maven项目a2依赖maven项目a1,a2会自动依赖a1项目的所有jar包(scope为compile)。
比如a1中已经引用了log4j-1.2.15.jar,a2中无需在依赖。

如果项目a3依赖a1和a2,a1和a2都依赖log4j jar包,根据传递特性,那么a3中是依赖a1的log4j jar包呢还是a2的log4j?
答案是:和a3项目pom.xml中依赖a1 a2的顺序有关,谁靠前依赖谁。
同时
直接依赖 大于 间接依赖 (比如 a1–>B.jar,a2–>A.jar–>B.jar)那么a3依赖的是a1中的B.jar
依赖层次小的 大于 依赖层次大的(比如 a1–>A.jar–>B.jar–>C.jar,a2–>D.jar–>C.jar)
那么a3依赖的是a2中的C.jar
排除依赖 (比如 a1–>B.jar,a2–>A.jar–>B.jar)那么a3应该依赖的是a2中的B.jar,这时应该在a3的pom.xml文件中,在依赖a1dependency标签中添加exclusions标签

#maven隐藏变量

  • ${basedir} 项目根目录
  • ${project.build.directory} 构建目录,缺省为target
  • ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
  • p r o j e c t . b u i l d . f i n a l N a m e 产 出 物 名 称 , 缺 省 为 {project.build.finalName} 产出物名称,缺省为 project.build.finalName{project.artifactId}-${project.version}
  • ${project.packaging} 打包类型,缺省为jar
  • ${project.xxx} 当前pom文件的任意节点的内容,eg ${project.groupId}表示当前pom文件中的groupId
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值