Maven -- dependency详解

PS:部分来源官网文档,翻译不到位,请移步官网

一 :type:个人理解:依赖<dependency>通过其子标签   定位了某个特定的唯一构件,所以type--依赖类型,更准确的说应该是依赖的构件的类型。它指定了应该用什么样的插件来处理该构件。

构件:在Maven中,任何依赖(jar包,tomcat等),或项目(自己打包的jar,war等)输出都可成为构件。每个构件都有自己的唯一标识(唯一坐标),由groupId,artifactId,和version等信息构成,由此,Maven就可以对构件进行版本控制,管理。任何可以被Maven的坐标系统唯一标识的对象都是一个Maven构件,但是,只包含其他POM文件(该文件本身不产生构件,打包方式为pom)使用定义的POM文件也是一个Maven构件。

依赖的类型,通常但并不总是代表依赖文件的扩展名。类型可以映射到不同的扩展名和分类器,类型通常与所使用的包装方式相对应,但也不都是如此。<packaging>xxx</packaging>。常见的有 jar, war, ejb-client, test-jar等等 。另,type的默认值为jar。以下是官网列出的一些默认处理方式列表,但这不是全部。插件也可以通过将extension设置为true,从而产生新的type定义

涉及到插件知识,这里只是提到相关的一部分。The <plugin> element contains informations required for a plugin,其中有个子标签<extensions>, 官网对其的解释为:“是否从该插件加载Maven扩展(如打包和类型处理程序 such as packaging and type handlers)。出于性能原因,这应该只在必要时启用,注意:由于技术原因,这个字段的类型是String,而语义类型实际上是Boolean,默认为false” 。这中间的细节暂不做深究,这里主要是弄清type的概念意义。

想起以前看到的一句话,Maven就是一个插件集合,(以下是我个人观点,我不确定是否正确)我认为任何构件都是通过一些插件按照其pom文件指定的build方式产生的,该过程可以指定插件以及插件的工作方式,也可以完全采取默认方式。约定由于配置。

同一个工程,其build方式不同,自然也会产生不同的构件。所以我们在指定依赖的时候,有时若我们想依赖的并不是jar类型的构件,则需要指出其type,若有必要,还需更进一步指出其分类器classifier。实际上,通过gav确定的坐标体系并没有具体到某一个构件,它真正指向的可能是类似这样的一组文件,默认会在文件中选择默认值 type 为 jar, calssifier 为 null 的那份构件(我们可以称之为主构件和附加构件吧)用于匹配dependency引用的最小信息集实际上是{groupId,artifactId,version,type,classifier},然而多数情况下,这些依赖关系将引用的通常是没有classifier的jar依赖。所以我们不需要补充type和classifier信息,因为type的默认值是jar,并且默认classifier为null

然而,在下列这种情况下,光靠gav已经找不到对应构件了,这时候便需要classifier指定特定版本

二:classifier:构件分类器,帮助定义构建输出的一些附属构件。如spring-core.jar,还生成有文档javadoc.jar,源码sources.jar。通常追加组成构件的文件名,跟在version之后,默认为null。通过指定分类器,可以指向不同的附加构件,比如sources和javadoc。它也可以用于区分 由同一份pom但build方式不同生成的一组构件,如上例中使用jdk13和jdk15。注意:type通常是和classifier一起使用的,两者具有配对关系,两者不匹配会导致找不到指定构件。

其他属性参考文章https://blog.csdn.net/VVVZCS/article/details/81625547,暂时没空深究

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值