大家都知道Maven的优点是依赖管理,特别是前期使用ANT的开发者都有很多感触。最近要开发一个java工程,定的要使用maven,会使用hadoop和hbase的客户端,而引入一个hadoop-client的jar或者hbase的jar包,会依赖十几个其他的jar包,而这些jar包的功能我又用不上,所以这种依赖反倒成了工程瘦身的负担。关键我还有强迫症,见到这些对工程无用的包,我就抓狂。所以在网上百找千寻,找到了几个方法:
1. 项目间传递
如果我的当前项目是project1,project1要依赖project2,project1依赖project2的配置中加上<optional>true</optional>,表示依赖可选,
<dependency> <groupId>com.projecct</groupId> <artifactId>project2</artifactId> <version>1.0</version> <scope>compile</scope> <optional>true</optional> </dependency>
那么以后所有声明依赖project1的项目如果也依赖project2,就必须写手动声明。比如project3依赖project1和project2,如果project3只声明了对project1的依赖,那么project2不会自动加入依赖,需要重新声明对project2的依赖。
这种方式排除不了我项目中对第三方jar包所依赖的其他依赖,因为我不可能去修改第三方jar包的pom文件,所以只适合在项目组内部使用。
2. 依赖过滤
(1)单依赖过滤
同依赖过滤直接处理:可以过滤一个或者多个,如果过滤多个要写多个<exclusion>。这个也解决不了我的问题,或者说解决太麻烦,我那里知道hbase要依赖那些包,记不住。
<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase</artifactId> <version>0.94.17</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency>
(2)多依赖过滤
把所以依赖都过滤了。手起刀落~啊,世界都安静了。
<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase</artifactId> <version>0.94.17</version> <exclusions> <exclusion> <groupId>*</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency>
自从搞定了这个依赖过滤啊,我腰不酸,腿不疼了,手不抖了,一口气啊,5000行代码,都不觉得累了~!看这里!看这里!看哪里! 想依赖那里就依那里!妈妈再也不用担心我的学习了!
相关推荐
使用Maven核心概念介绍(坐标、依赖、仓库、插件、生命周期等)、Maven与第三方Elicpse整合及如何在Eclipse中使用Maven、什么是私服、Maven为什么...任亮系列-maven依赖传递和可选依赖和排除依赖.mp41313.任亮系列-mav
maven系统的思维导图总结,总结了maven的三大scope,maven的生命周期,eclipse中使用maven,maven中的依赖传递,依赖排除,继承、聚合、自动部署。
本课程将帮助你了解 Maven 的作用,常用命令,如何配置依赖,以及依赖的范围、依赖的传递性、依赖的排除、生命周期等重要概念,以及继承、聚合这样的 Maven 配置。更会手把手教你在 Eclipse 中玩转 Maven。
· 01....依赖的传递性 · 28.依赖的排除 · 29.依赖的原则说明 · 30.依赖的原则测试 · 31.统一管理依赖的版本号 · 32.继承 · 33.聚合 · 34.Web工程的自动部署 · 35.查找依赖信息的网站
第5章:坐标和依赖/5.9 最佳实践/5.9.1 排除依赖 第5章:坐标和依赖/5.9 最佳实践/5.9.2 依赖属性使用变量 第5章:坐标和依赖/5.9 最佳实践/5.9.3 依赖关系查看 第6章:仓库/6.1 何为Maven仓库 第6章:仓库/6.2 仓库...
Maven依赖管理 (Dependency Management) 3.5.6. 站点生成和报告 (Site Generation and Reporting) 3.6. 小结 4. 定制一个Maven项目 4.1. 介绍 4.1.1. 下载本章样例 4.2. 定义Simple Weather项目 4.2.1...
本课程将帮助你了解 Maven 的作用,常用命令,如何配置依赖,以及依赖的范围、依赖的传递性、依赖的排除、生命周期等重要概念,以及继承、聚合这样的 Maven 配置。更会手把手教你在 Eclipse 中玩转 Maven。 ·...
基于配置的依赖项管理,该插件将控制项目的直接和传递依赖项的版本,并将遵守项目依赖项poms中声明的任何排除项以及任何导入的bom。 要了解有关使用Dependency Management插件的更多信息,请参阅其。 贡献 该项目...
7. 传递依赖,简化依赖管理 这是最为方便的,可以省了很多配置。如a 依赖 b,b 依赖c 默认 a也会依赖 c。但是也会带来隐患,如版本冲突。不过maven 也已经考虑到了,可以使用exclusions来排除相应的重复依赖
3.依赖传递:依赖具有传递性,在不同模块重复依赖会有覆盖现象。 4.可选依赖:在依赖下使用option标签,标签的内容为true或者false。如果为true则向需要该模块的模块进行隐藏。此时该模块需要手动依赖所需模块。即...
1.maven基础知识回顾 1.本地仓库 2.远程仓库 2. maven的依赖传递 1.使用maven提供的依赖调解原则 2.排除依赖 3.锁定版本 3.基于m
Gradle DMT插件介绍一个Gradle插件,... 基于配置的依赖项管理,该插件将控制项目的直接和传递依赖项的版本,并将遵守项目依赖项poms中声明的任何排除项以及所有导入的bom。执照Gradle DMT插件是根据发布的开源软件。
根据范围排除依赖项 可选地包括传递依赖 根据xml标签名称删除pom.xml成员 用生成的pom.xml.flatten切换项目pom.xml Maven目标 插件演示 比较结果 原始 生成的 用法示例 测试项目 基础项目 Scala Identity ...
Maven 是目前流行的自动化构建工具,对于生产环境下...本课程将帮助你了解 Maven 的作用,常用命令,如何配置依赖,以及依赖的范围、依赖的传递性、依赖的排除、生命周期等重要概念,以及继承、聚合这样的 Maven 配置。
将所有直接/传递依赖项打印为平面列表。 “可选”或在引用依赖项中被排除的依赖项不会打印到列表中。 确保在运行之前将项目安装到本地存储库中,否则将找不到中央(* -SNAPSHOT)中不存在的示例。 通过安装到本地,...
如果要排除某些框架,当前必须使用构建系统排除传递依赖项的方式自行完成。 用法 如果您在类路径上使用Groovy,则库将类路径中的文件作为wro描述符。 如果groovy不存在,它将退回到。 请访问wro4j的以获取更多文档...
CycloneDX Gradle插件CycloneDX Gradle插件创建一个项目的所有直接和传递依赖项的集合,并从结果中创建有效的CycloneDX物料清单文档。 CycloneDX是一种轻量级的BOM规范,易于创建,易于阅读且易于解析。用法执行: ...