scope

1.compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去

2.test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit

3.runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段

4.provided:打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作

5.system:从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径

filtering

主要用来替换项目中的资源文件(*.xml、*.properties)当中的${...},比如${db.url},那么如果配置了db.url=aaa的话,在项目编译的时候,就会自动的把${db.url}替换为aaa

profile

允许在项目文件(pom.xml)里面定义若干个profile段,然后在编译时选择其中的一个用于覆盖项目文件原先的定义

parent&dependency&dependencyManagement

下面做一个测试,A项目作为一个公共项目,被B项目和C项目所依赖,B以parent的方式,C以dependency的形式。在A项目创建一个类,添加一个方法,然后分别在项目B、C中写测试方法,调用A项目类中的方法。

-----------|项目A中引入了一个commons-lang3的方法,开发中常用到里面的StringUtils判断字符串的方法,以此为其中一个测试点

-----------|最后可以发现在B中,通过<parent>引用的项目A,可以使用A项目中<dependency>中依赖的StringUtils的方法,但是不能调用A项目中自己定义的类和方法,C项目中通过<dependency>依赖的A,两者却都可以调用。

1.在同一个pom文件下,如果<dependencies>和<dependencyManagement>中都对该jar做了依赖,以<dependencies>的为准,优先级高于<dependencyManagement>。若前者没有对其依赖,而后者对其有依赖,则以后者为准。<dependencyManagement>里只是声明依赖,并不实现引入.

2.在不同的pom文件中,存在父子相互依赖关系的,父项目的pom中<dependencyManagement>中对该jar做了依赖,而子项目中<dependencies>又依赖了该jar,如果子项目中没有指定<version>和<scope>,则继承父项目中该jar的<version>和<scope>。如果子项目中指定了<version>和<scope>,以子项目的为准。

3.pom文件中,jar的版本判断有2种途径

-----------|1,第一种就是最常见的depenency中写version

-----------|2,如果不是第一种,那么maven会到自己的pom文件或者父pom中找有没有对该artifactid和groupid进行版本申明的,如果有就拿那个版本号,没有就报错

-----------|3,如果两种都写错,那么第一种覆盖第二种

Maven 标签的更多相关文章

  1. Maven 标签详解

    <span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...

  2. maven 标签classifier 研究一下

    研究一下maven的标签: <dependency> <groupId>io.netty</groupId> <artifactId>netty-tcn ...

  3. maven标签说明

    <project xmlns="http://maven.apache.org/POM/4.0.0 " xmlns:xsi="http://www.w3.org/2 ...

  4. 鲜为人知的maven标签解说

    目录 localRepository interactiveMode offline pluginGroups proxies servers mirrors profiles 使用场景 出现位置 激 ...

  5. maven 标签: 项目管理软件 2016-09-11 22:29 323人阅读 评论(24) 收藏

    开始接触itoo的java项目之后,也就开始接触maven,搭建环境中有一个步骤是配置maven和jboss,当时知道jboss是用来部署我们的项目的,但是maven就只知道一个更新maven,那么, ...

  6. maven 标签 关于<import>标签

      标签用途:在dependecyManagement元素下用,合并此import标签上级dependency的groupId和artid中指向依赖的dependecyManagement内容   标 ...

  7. [Maven]Maven入门教程

    概念 Maven是什么 Maven 是一个项目管理工具.它负责管理项目开发过程中的几乎所有的东西. 版本 maven有自己的版本定义和规则 构建 maven支持许多种的应用程序类型,对于每一种支持的应 ...

  8. 使用国内 maven 镜像 代替国外 mirror

    使用maven的都知道国外的maven下载一个是比较慢,一个是因为被墙,一些jar包无法下载,非常老火. 比如出现类似下面的错误: Unknown host repo.maven.apache.org ...

  9. maven环境的配置

    http://maven.oschina.net/help.html     --配置说明 http://maven.oschina.net/index.html#nexus-search;quick ...

随机推荐

  1. js五子棋游戏

    //code <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...

  2. 机器学习进阶-案例实战-停车场车位识别-keras预测是否停车站有车

    import numpy import os from keras import applications from keras.preprocessing.image import ImageDat ...

  3. 正则表达式——WPF输入控件TextBox 限定输入特定字符

    概念: 正则表达式是对字符串操作的一种逻辑公式, 就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”, 这个“规则字符串”用来表达对字符串的一种过滤逻辑. 目的: 给定一个正 ...

  4. centos7 redis配置

    https://www.cnblogs.com/web424/p/6796993.html

  5. Others-大数据平台Lambda架构浅析(全量计算+增量计算)

    大数据平台Lambda架构浅析(全量计算+增量计算) 2016年12月23日 22:50:53 scuter_victor 阅读数:1642 标签: spark大数据lambda 更多 个人分类: 造 ...

  6. 原生java读取存储为xml格式的数据,并存储到java bean里

    一.举例读取的文件为:X-bond可交易债券信息_20180917.xml <?xml version="1.0" encoding="UTF-8"?&g ...

  7. javascript:查看一个图片是否加载完成

    查看一个图片是否加载完成:<img id="img1" src="http://pic1.xxx.com/wall/f/51c3bb99a21ea.jpg" ...

  8. SQL 数据库开发一些精典的代码(转永南)

    1.按姓氏笔画排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 2.数据库加密: s ...

  9. ADO数据库操作方式

    微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件.它提供了编程语言和统一数据访问方式OLE DB的一个中间层.允许开发人员编写访问数据的代码而不用关心数 ...

  10. linux 3.10 gro的理解和改进

    gro,将同一个flow的一定时间范围之内的skb进行合并,减少协议栈的消耗,用于收包性能提升.gro网上的资料很多,但是都很少谈到gro的改进,刚好身边有个同事也想改这块的内容, 所以将最近看的gr ...