zoukankan      html  css  js  c++  java
  • 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。

    特性

    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中的依赖范围设置

     

  • 相关阅读:
    链路追踪
    Zuul网关
    MyBatis批量插入
    自定义组件使用v-model
    正则表达式入门
    博客园主题1【备份】
    关于我
    input输入框内容规范正则总结
    实例003:完全平方数
    python基础day5dict
  • 原文地址:https://www.cnblogs.com/Maple-leaves/p/5785885.html
Copyright © 2011-2022 走看看