Maven之构件
定义
构件:在Maven中,任何依赖(jar包,tomcat等),或项目(自己打包的jar,war等)输出都可成为构件。每个构件都有自己的唯一标识(唯一坐标),由groupId,artifactId,和version等信息构成,由此,Maven就可以对构件进行版本控制,管理。
- groupId:当前Maven构件隶属的项目名。实际开发中,项目往往会模块化开发,如spring-core,spring-aop等,他们都是Spring项目下不同的模块。命名方式与Java包名类似,通常是域名的反向书写。如ch.qos.logback,事实上项目管理组织的网址是:http://logback.qos.ch/ 。(必须)
- artifactId:隶属项目中的模块名。(必须)
- version:当前版本。(必须)
- packaging:打包方式,如jar,war... (必须)
- classifier:帮助定义构建输出的一些附属构件。如spring-core.jar,还生成有文档javadoc.jar,源码sources.jar。
特性
- 构件具有依赖传递。例如:项目依赖构件A,而构件A又依赖B,Maven会将A和B都视为项目的依赖。
- 构件之间存在版本冲突时,Maven会依据 “短路优先” 原则加载构件。此外,我们也可以在POM.XML中,使用<exclusions></exclusions>显式排除某个版本的依赖,以确保项目能够运行。
- 项目依赖构件A和B,构件A → C → D(version:1.0.0),构件B → D(version:1.1.0),此时,Maven会优先解析加载D(version:1.1.0)。
- 项目依赖构件A和B,构件A → D(version:1.0.0), 构件B → D(version:1.1.0),此时,Maven会优先解析加载D(version:1.0.0)。
- 构件的依赖范围。Maven在项目的构建过程中,会编译三套classpath,分别对应:编译期,运行期,测试期。而依赖范围,就是为构件指定它可以作用于哪套classpath。
| 编译期 | 测试期 | 运行期 | 说明 | |
| compile | √ | √ | √ | 默认范围 |
| provided | √ | √ | 如servlet-api.jar,运行期由web容器提供 | |
| runtime | √ | √ | 编译期无需直接引用。 | |
| test | √ | 如junit.jar | ||
| system | √ | √ |
必须通过 <systemPath></systemPath> 元素,显示指定依赖文件的路径,与本地系统相关联,可移植性差。 |
|
| import | 表示继承父POM.XML中的依赖范围设置 |
Maven之构件的更多相关文章
- 使用Maven部署构件至私服
--------------------siwuxie095 使用 Maven 部署构件至私服 1.部署构件到 Nexu ...
- Maven部署构件至远程仓库
私服的一大作用就是部署第三方构件,包括组织内的生成的构件以及一些无法从外部仓库获取的构件.无论是日常开发中生成的构件,还是正式版本发布的构件,都需要部署到仓库中,供其它团队成员使用.Maven除了能对 ...
- Maven构件解析(转)
文章转自http://gavinwind2000.iteye.com/blog/2290652 谢谢博主的总结! 在Maven中,任何一个依赖.插件或者项目构建的输出,都可以称之为构件. Maven在 ...
- maven之如何将自己的写的 maven 构件发布到 nexus 私服
概念:Nexus服务器是一个代码包管理的服务器,可以理解 Nexus 服务器是一个巨大的 Library 仓库.Nexus 可以支持管理的工具包括 Maven , npm 等,对于 JAVA 开发来说 ...
- Maven仓库 - 分发构件至远程仓库
分发构件至远程仓库 mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库.本地Maven仓库的构件只能供当前用户使 ...
- Maven distributionManagement 分发构件至远程仓库
https://blog.csdn.net/qq827245563/article/details/82661583 maven发布到本地仓库,和私服https://blog.csdn.net/u01 ...
- Maven实战系列文章
1.Maven命令行使用:mvn clean compile(编译) 2.Maven命令行使用:mvn clean package(打包) 3.Maven命令行使用:mvn clean install ...
- Maven的POM.xml配置大全
<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://mave ...
- 史上最全的maven的pom.xml文件详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
随机推荐
- Spring 资源文件处理
Java中,不同来源的资源抽象成URL,通过注册不同的handler(URLStreamHandler)来处理不同来源的资源的读取逻辑.一般handler的类型使用不同的前缀(协议,protocal) ...
- JS 字符串
var str = "aaddaabbcdddefg" console.log(str.charAt());//b 没有返回空不是null console.log(str.inde ...
- NRF24L01 无线模块的使用
NRF24L01 是一款工作在2.4-2.5GHz通用ISM频段的单片收发芯片 工作电压:1.9-3.6V低电压工作 高速率:2Mbps,由于空中传输时间很短,极大的降低了无线传输中的碰撞现象 多频点 ...
- 安装ArcGIS Desktop 9.3
本文仅用于学习交流,商业用途请支持正版!转载请注明: http://www.cnblogs.com/mxbs/p/6216865.html 准备: ArcGIS Desktop 9.3.crack_f ...
- eclipse安装版本
http://www.08kan.com/gwk/MzAwOTE3NDY5OA/203521023/1/cdf557d3a1d4535a6c691ce756c3f8b1.html
- [LeetCode] Find the Difference 寻找不同
Given two strings s and t which consist of only lowercase letters. String t is generated by random s ...
- [LeetCode] Fraction to Recurring Decimal 分数转循环小数
Given two integers representing the numerator and denominator of a fraction, return the fraction in ...
- 2016第三届C++大会参会感悟(上)
继05年第一届C++大会,09年第二届,2016年10月28日-29日,在上海举行第三届C++大会.讲师主要有C++之父 / Bjarne Stroustrup,前Facebook研究科学家 / An ...
- laravel实现数据库多库配置,读写分离配置或者多读写分离配置
'connections' => array( //默认mysql配置,访问test库 'mysql' => array( 'driver' => 'mysql', 'host' = ...
- Wannafly Union Goodbye 2016
A 题意:平面上有n个点(n<=100000),给你一个p(20<=p<=100) 判断是否存在一条直线至少过[np/100](向上取整)个点,时限20s,多组数据 分析:概率算法 ...