定义

  构件:在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。

特性

  1. 构件具有依赖传递。例如:项目依赖构件A,而构件A又依赖B,Maven会将A和B都视为项目的依赖。
  2. 构件之间存在版本冲突时,Maven会依据 “短路优先” 原则加载构件。此外,我们也可以在POM.XML中,使用<exclusions></exclusions>显式排除某个版本的依赖,以确保项目能够运行。
    1. 项目依赖构件A和B,构件A → C → D(version:1.0.0),构件B → D(version:1.1.0),此时,Maven会优先解析加载D(version:1.1.0)。
    2. 项目依赖构件A和B,构件A → D(version:1.0.0), 构件B → D(version:1.1.0),此时,Maven会优先解析加载D(version:1.0.0)。
  3. 构件的依赖范围。Maven在项目的构建过程中,会编译三套classpath,分别对应:编译期,运行期,测试期。而依赖范围,就是为构件指定它可以作用于哪套classpath。
  编译期 测试期 运行期 说明
compile 默认范围
provided   如servlet-api.jar,运行期由web容器提供
runtime   编译期无需直接引用。
test     如junit.jar
system  

必须通过 <systemPath></systemPath> 元素,显示指定依赖文件的路径,与本地系统相关联,可移植性差。

import       表示继承父POM.XML中的依赖范围设置

Maven之构件的更多相关文章

  1. 使用Maven部署构件至私服

    --------------------siwuxie095                                 使用 Maven 部署构件至私服         1.部署构件到 Nexu ...

  2. Maven部署构件至远程仓库

    私服的一大作用就是部署第三方构件,包括组织内的生成的构件以及一些无法从外部仓库获取的构件.无论是日常开发中生成的构件,还是正式版本发布的构件,都需要部署到仓库中,供其它团队成员使用.Maven除了能对 ...

  3. Maven构件解析(转)

    文章转自http://gavinwind2000.iteye.com/blog/2290652 谢谢博主的总结! 在Maven中,任何一个依赖.插件或者项目构建的输出,都可以称之为构件. Maven在 ...

  4. maven之如何将自己的写的 maven 构件发布到 nexus 私服

    概念:Nexus服务器是一个代码包管理的服务器,可以理解 Nexus 服务器是一个巨大的 Library 仓库.Nexus 可以支持管理的工具包括 Maven , npm 等,对于 JAVA 开发来说 ...

  5. Maven仓库 - 分发构件至远程仓库

    分发构件至远程仓库   mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库.本地Maven仓库的构件只能供当前用户使 ...

  6. Maven distributionManagement 分发构件至远程仓库

    https://blog.csdn.net/qq827245563/article/details/82661583 maven发布到本地仓库,和私服https://blog.csdn.net/u01 ...

  7. Maven实战系列文章

    1.Maven命令行使用:mvn clean compile(编译) 2.Maven命令行使用:mvn clean package(打包) 3.Maven命令行使用:mvn clean install ...

  8. Maven的POM.xml配置大全

    <?xml version="1.0" encoding="utf-8"?> <project xmlns="http://mave ...

  9. 史上最全的maven的pom.xml文件详解

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

随机推荐

  1. Python攻关之Django(一)

    课程简介: Django流程介绍 Django url Django view Django models Django template Django form Django admin (后台数据 ...

  2. LAMP坏境和LNMP环境安装Nagios4.1.1和基本配置

    ----------------------------------------以下内容为笔者生产环境的监控,安装都是经过一步步测试的-------------------------------- ...

  3. Perforce 与Source Insight, Visual Studio集成

    转自:http://shashanzhao.com/archives/837.html 1.Perforce 首先需要为perforce设置系统环境变量,以便perforce命令行可以正常使用. 环境 ...

  4. Android APP 简单高效的禁用横竖屏切换

    默认情况下,Android APP的界面会随着手机方向的改变而改变,当手机处于竖屏状态,APP的界面也处于竖屏状态,而当手机处于横屏状态,APP也会自动切换到横屏状态.一般情况下APP的界面都是为竖屏 ...

  5. 理解Docker(6):若干企业生产环境中的容器网络方案

    本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  6. React构建单页应用方法与实例

    React作为目前最流行的前端框架之一,其受欢迎程度不容小觑,从这门框架上我们可以学到许多其他前端框架所缺失的东西,也是其创新性所在的地方,比如虚拟DOM.JSX等.那么接下来我们就来学习一下这门框架 ...

  7. 负margin的移位参考线

    同早年~ 问题描述 在xx项目中,羊城通卡号的输入框处使用了xx库中的实现方式,即将提示文字标签<label>通过负margin移位到<input>框的下面.静态时展现良好,j ...

  8. 谈一下如何设计Oracle 分区表

    在谈设计Oracle分区表之间先区分一下分区表和表空间的个概念: 表空间:表空间是一个或多个数据文件的集合,所有数据对象都存放在指定的表空间中,但主要存放表,故称表空间. 分区表:分区致力于解决支持极 ...

  9. SASS 入门笔记

    参考资料: SASS 用法指南 SASS 语法 Sass Basics SASS_REFERENCE sass 有两种后缀名文件:一种后缀名为 sass,不使用大括号和分号:另一种就是我们这里使用的 ...

  10. C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper(三:附源码)

    前言:之前的两篇封装了一些基础的表单组件,这篇继续来封装几个基于bootstrap的其他组件.和上篇不同的是,这篇的有几个组件需要某些js文件的支持. 本文原创地址:http://www.cnblog ...