Maven中的元素Exclusions、modules、parent、properties以及import

Stella981
• 阅读 782

Dependencies:是可选依赖(Optional Dependencies) 
Exclusions:是依赖排除(Dependency Exclusions) 
2、Dependencies 
(1)当一个项目A依赖另一个项目B时,项目A可能很少一部分功能用到了项目B,此时就可以在A中配置对B的可选依赖。举例来说,一个类似hibernate的项目,它支持对mysql、oracle等各种数据库的支持,但是在引用这个项目时,我们可能只用到其对mysql的支持,此时就可以在这个项目中配置可选依赖。 
(2)配置可选依赖的原因: 
1)节约磁盘、内存等空间; 
2)避免license许可问题; 
3)避免类路径问题,等等。 
(3)示例:

  1. <project>

  2. ...

  3. <dependencies>

  4. <dependency>

  5. <groupId>sample.ProjectB</groupId>

  6. <artifactId>Project-B</artifactId>

  7. <version>1.0</version>

  8. <scope>compile</scope>

  9. <optional>true</optional>

  10. </dependency>

  11. </dependencies>

  12. </project>

  假设以上配置是项目A的配置,即:Project-A –> Project-B。在编译项目A时,是可以正常通过的。如果有一个新的项目X依赖A,即:Project-X -> Project-A。此时项目X就不会依赖项目B了。如果项目X用到了涉及项目B的功能,那么就需要在pom.xml中重新配置对项目B的依赖。假设A->B, B->x(可选), B->y(可选)。这里由于x,y是可选依赖,依赖不会传递,x,y将不会对a有任何影响

3、Exclusions 
(1)当一个项目A依赖项目B,而项目B同时依赖项目C,如果项目A中因为各种原因不想引用项目C,在配置项目B的依赖时,可以排除对C的依赖。 
(2)示例(假设配置的是A的pom.xml,依赖关系为:A –> B; B –> C):

  1. <project>

  2. ...

  3. <dependencies>

  4. <dependency>

  5. <groupId>sample.ProjectB</groupId>

  6. <artifactId>Project-B</artifactId>

  7. <version>1.0</version>

  8. <scope>compile</scope>

  9. <exclusions>

  10. <exclusion>

  11. <groupId>sample.ProjectC</groupId>

  12. <artifactId>Project-C</artifactId>

  13. </exclusion>

  14. </exclusions>

  15. </dependency>

  16. </dependencies>

  17. </project>

4、maven的依赖调解有两大原则:路径最近者优先;第一声明者优先。 
5、maven的归类依赖

  1. <properties>

  2. <springframework.version>2.5.6<springframework.version>

  3. </properties>

定义此属性值后,maven会将pom中的所有的${springframework.version}替换成实际值2.5.6

modules、parent、properties以及import的详细说明网址:https://www.cnblogs.com/youzhibing/p/5427130.html

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
springboot入门之简单demo
项目构建  我们采用maven构建SpringBoot工程,首先创建一个maven工程,对应的pom文件如下:<properties<java.version1.8</java.version</properties<!集成springboot的父依赖
kenx kenx
3年前
Maven 基础标签之版本管理和冲突解决
前言我们在做java项目的时候由于jar包太多,我们就需要使用maven做项目管理,管理项目的jar包依赖,包括打包上线maven基础Maven是一个项目管理工具,主要用于项目构建,依赖管理,项目信息管理每个maven项目根目录都会有一个pom.xml文件,负责项目构建,依赖管理在这个文件里面,你只需要添加相应的jar包坐标配置,maven就会自动
LeeFJ LeeFJ
1年前
Foxnic-Web —— 可插拔模块的菜单控制
FoxnicWeb的设计就是业务模块下Maven依赖层面可插拔,即只要把对应的模块加入启动项目的Maven依赖中那么启动项目就拥有了插入模块的功能,反之亦然。因此,在FoxnicWeb的业务模块(MavenModule)中需要做一些特殊处理,使业务模块插拔时同时体现在菜单上。
Stella981 Stella981
3年前
Maven传递依赖无法引入解决办法
今天一个传递依赖问题搞了我半天,终于搞明白原因了。一个jar包A依赖了httpclient,然后另一个jar包B引入A,在IDEA里面只能看到依赖A,不管咋样都看不到依赖httpclient。我在IDEA的项目B里面,打包后在控制台发现一个告警:thePOMforAisinvalid,transitivedependencies
Stella981 Stella981
3年前
Docker部署SpringBoot项目
SpringBoot项目代码首先构建一个简单的SpringBoot项目,然后给项目添加Docker支持,最后对项目进行部署。在pom.xml中添加SpringBoot依赖,并添加Web支持。<parent<groupIdorg.springfr
Wesley13 Wesley13
3年前
IDEA使用常见问题汇总
IDEA在用MAVEN创建项目时,依赖不能自动导入在设置中,取消lgnored中的文件选项,然后重新导入。!(https://oscimg.oschina.net/oscnet/a1a9694c762e6bd2e80a6bc3b1b9012aa61.jpg)!(https://osci
Stella981 Stella981
3年前
NPM关于package.json每次发布的时候都更新导致的问题
先来看看package.json中dependencies字段指定了项目运行所依赖的模块,devDependencies指定项目开发所需要的模块。它们都指向一个对象。该对象的各个成员,分别由模块名和对应的版本要求组成,表示依赖的模块及其版本范围。 package.json文件里面的 devDependenci
Stella981 Stella981
3年前
SpringBoot 开发秘籍
!(https://oscimg.oschina.net/oscnet/0b0e2e35748141a9a2de5f4eb579de18.png)概述在项目开发过程中,某个功能需要依赖在配置文件中配置的参数。这时候就可能出现下面这种现象问题:有时候经常出现项目启动了,等到使用某个功能组件的时候出现异常,提示参数未配置或者bean
Maven进阶学习指南 | 京东云技术团队
当我们在开发项目时,有时需要用到外部依赖组件,例如当我们需要Json序列化的时候需要用到FastJson组件,我们可以通过下载对应jar包加载到项目中。但当一个大的项目同时需要依赖各种各样的外部服务,就存在着配置繁琐、依赖冲突等问题,因此可以通过maven来完成对应的依赖管理功能。
死牛胖子 死牛胖子
5个月前
Maven如何解决版本依赖冲突
Maven的依赖具备传递性,一个项目会依赖很多包,这些依赖包又会依赖其它包,从而构成复杂的依赖关系,这其中相同的包可能会被多次依赖,如果依赖了多个版本,就会产生冲突,此时,Maven需要一个选择策略,从多个版本中选择一个版本。Maven会根据以下两个原则来