Maven 标签
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 标签的更多相关文章
- Maven 标签详解
<span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...
- maven 标签classifier 研究一下
研究一下maven的标签: <dependency> <groupId>io.netty</groupId> <artifactId>netty-tcn ...
- maven标签说明
<project xmlns="http://maven.apache.org/POM/4.0.0 " xmlns:xsi="http://www.w3.org/2 ...
- 鲜为人知的maven标签解说
目录 localRepository interactiveMode offline pluginGroups proxies servers mirrors profiles 使用场景 出现位置 激 ...
- maven 标签: 项目管理软件 2016-09-11 22:29 323人阅读 评论(24) 收藏
开始接触itoo的java项目之后,也就开始接触maven,搭建环境中有一个步骤是配置maven和jboss,当时知道jboss是用来部署我们的项目的,但是maven就只知道一个更新maven,那么, ...
- maven 标签 关于<import>标签
标签用途:在dependecyManagement元素下用,合并此import标签上级dependency的groupId和artid中指向依赖的dependecyManagement内容 标 ...
- [Maven]Maven入门教程
概念 Maven是什么 Maven 是一个项目管理工具.它负责管理项目开发过程中的几乎所有的东西. 版本 maven有自己的版本定义和规则 构建 maven支持许多种的应用程序类型,对于每一种支持的应 ...
- 使用国内 maven 镜像 代替国外 mirror
使用maven的都知道国外的maven下载一个是比较慢,一个是因为被墙,一些jar包无法下载,非常老火. 比如出现类似下面的错误: Unknown host repo.maven.apache.org ...
- maven环境的配置
http://maven.oschina.net/help.html --配置说明 http://maven.oschina.net/index.html#nexus-search;quick ...
随机推荐
- hadoop动态添加删除节点datanode及恢复
1. 配置系统环境 主机名,ssh互信,环境变量等 本文略去jdk安装,请将datanode的jdk安装路径与/etc/hadoop/hadoop-evn.sh中的java_home保持一致,版本ha ...
- CRC16-CCITT C语言代码
代码如下,使用空间换时间的方法 #define CRC16_CCITT_SEED 0xFFFF // 该位称为预置值,使用人工算法(长除法)时 需要将除数多项式先与该与职位 异或 ,才能得到最后的除数 ...
- mac 管理员权限变成了普通权限处理方法
在更换账户名称的时候出了这个问题.设置的时候不会显示用户名,没有电脑的管理权限了,找到如下方法解决的,试了可行. http://blog.csdn.net/vickylizy/article/deta ...
- node.js 发送邮件
var nodemailer = require('nodemailer'); var smtpTransport = require('nodemailer-smtp-transport'); // ...
- Django 之单个mysql表使用
1. mysql 表使用的功能有: 增 删 改 查 这几大功能, 但是mysql 和django 对接之后,使用的语法不是原生的SQL语法. 2. 增功能的实现: User.objects.cre ...
- 10款流行的Markdown编辑器,总有一款适合你
摘要:作为一个开源人,如果你不会使用Markdown语法,那你就OUT了!Markdown 是 2004 年由 John Gruberis 设计和开发的纯文本格式的语法,非常的简单实用. 作为一个开源 ...
- VirtualBox配置
安装增强工具:http://mikemainguy.blogspot.jp/2015/03/installing-virtualbox-guest-additions.html 安装ssh:https ...
- cx_Oracle.DatabaseError: DPI-1047
ODPI-C Installation¶ Overview Oracle Client and Database Versions Linux Oracle Instant Client Zip Or ...
- HTML Tables
Great job! In this lesson, you learned how to create a table, add data to it, and section the table ...
- 模糊查询内存查询java实现
下面说说看到的工作项目中的代码,是这个样子的,事先查询一次数据库,将查询到的整张表的数据存到内存,以后使用时不再查询数据库,而直接操作内存中的数据,这主要用于数据库中的数据比较稳定,不会轻易改变的情况 ...