Maven中的元素Exclusions、modules、parent、properties以及import
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)示例:
- <project>
- ...
- <dependencies>
- <!-- declare the dependency to be set as optional -->
- <dependency>
- <groupId>sample.ProjectB</groupId>
- <artifactId>Project-B</artifactId>
- <version>1.0</version>
- <scope>compile</scope>
- <optional>true</optional> <!-- value will be true or false only -->
- </dependency>
- </dependencies>
- </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):
- <project>
- ...
- <dependencies>
- <dependency>
- <groupId>sample.ProjectB</groupId>
- <artifactId>Project-B</artifactId>
- <version>1.0</version>
- <scope>compile</scope>
- <exclusions>
- <exclusion> <!-- declare the exclusion here -->
- <groupId>sample.ProjectC</groupId>
- <artifactId>Project-C</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- </dependencies>
- </project>
4、maven的依赖调解有两大原则:路径最近者优先;第一声明者优先。
5、maven的归类依赖
- <properties>
- <springframework.version>2.5.6<springframework.version>
- </properties>
定义此属性值后,maven会将pom中的所有的${springframework.version}替换成实际值2.5.6
modules、parent、properties以及import的详细说明网址:https://www.cnblogs.com/youzhibing/p/5427130.html
最新文章
- windows下指定格式文件转移
- W3School-CSS 尺寸 (Dimension) 实例
- linux-----------shell的基础命令
- svn忽略eclipse自动生成的文件
- Android 采用Layout Inflater创建一个View对象
- Redis学习手册(Sorted-Sets数据类型)
- 纯css3代码写无缝滚动效果
- poj2392 多重背包
- JAVA 类中方法参数与返回值
- 在yii中使用gearman
- [转]";error while loading shared libraries: xxx.so.x"; 错误的原因和解决办法
- CSS3 keyframes动画实现弹跳效果
- python使用pyapns进行ios推送消息
- Coder的好伙伴Github
- 深度学习之TensorFlow构建神经网络层
- ECMA Script 6_唯一容器 Set_映射容器 Map
- VueJs(14)---理解Vuex
- 你真的理解Python中MRO算法吗?[转]
- kafka的Java客户端示例代码(kafka_2.12-0.10.2.1)
- DSO windowed optimization 代码 (4)