`

Maven依赖排除 禁止依赖传递 取消依赖的方法

阅读更多

    大家都知道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行代码,都不觉得累了~!看这里!看这里!看哪里! 想依赖那里就依那里!妈妈再也不用担心我的学习了!

 

3
0
分享到:
评论
5 楼 guodage003 2016-06-21  
终于安静了~~~
楼主谢谢啊 
4 楼 ks2144634 2016-03-19  
看了,楼主的通配符方法,妈妈在也不用担心我一个一个,排除了
3 楼 ljf_home 2016-03-07  
我的世界,一下子亮堂了
2 楼 zhangjianghao4 2015-07-31  
果断赞起,就喜欢楼主这么霸气,这依赖折腾了我一下午,可把您找着了
1 楼 larry100y 2015-01-18  
通配符这个方法好!

相关推荐

    Maven入门巨无霸视频教程(2.24G)

    使用Maven核心概念介绍(坐标、依赖、仓库、插件、生命周期等)、Maven与第三方Elicpse整合及如何在Eclipse中使用Maven、什么是私服、Maven为什么...任亮系列-maven依赖传递和可选依赖和排除依赖.mp41313.任亮系列-mav

    maven系统的思维导图总结

    maven系统的思维导图总结,总结了maven的三大scope,maven的生命周期,eclipse中使用maven,maven中的依赖传递,依赖排除,继承、聚合、自动部署。

    尚硅谷_Maven.doc

    本课程将帮助你了解 Maven 的作用,常用命令,如何配置依赖,以及依赖的范围、依赖的传递性、依赖的排除、生命周期等重要概念,以及继承、聚合这样的 Maven 配置。更会手把手教你在 Eclipse 中玩转 Maven。

    尚硅谷Java视频教程_Maven视频

    · 01....依赖的传递性 · 28.依赖的排除 · 29.依赖的原则说明 · 30.依赖的原则测试 · 31.统一管理依赖的版本号 · 32.继承 · 33.聚合 · 34.Web工程的自动部署 · 35.查找依赖信息的网站

    maven window下安装包

    第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权威指南 很精典的学习教程,比ANT更好用

    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 的作用,常用命令,如何配置依赖,以及依赖的范围、依赖的传递性、依赖的排除、生命周期等重要概念,以及继承、聚合这样的 Maven 配置。更会手把手教你在 Eclipse 中玩转 Maven。  ·...

    dependency-management-plugin:一个Gradle插件,提供类似Maven的依赖项管理功能

    基于配置的依赖项管理,该插件将控制项目的直接和传递依赖项的版本,并将遵守项目依赖项poms中声明的任何排除项以及任何导入的bom。 要了解有关使用Dependency Management插件的更多信息,请参阅其。 贡献 该项目...

    Maven完全手册

    7. 传递依赖,简化依赖管理 这是最为方便的,可以省了很多配置。如a 依赖 b,b 依赖c 默认 a也会依赖 c。但是也会带来隐患,如版本冲突。不过maven 也已经考虑到了,可以使用exclusions来排除相应的重复依赖

    SpringCloud入门.docx

    3.依赖传递:依赖具有传递性,在不同模块重复依赖会有覆盖现象。 4.可选依赖:在依赖下使用option标签,标签的内容为true或者false。如果为true则向需要该模块的模块进行隐藏。此时该模块需要手动依赖所需模块。即...

    Maven高级1

    1.maven基础知识回顾 1.本地仓库 2.远程仓库 2. maven的依赖传递 1.使用maven提供的依赖调解原则 2.排除依赖 3.锁定版本 3.基于m

    gradle-dmt-plugin:一个Gradle插件,提供类似Maven的依赖项管理功能

    Gradle DMT插件介绍一个Gradle插件,... 基于配置的依赖项管理,该插件将控制项目的直接和传递依赖项的版本,并将遵守项目依赖项poms中声明的任何排除项以及所有导入的bom。执照Gradle DMT插件是根据发布的开源软件。

    flatten-maven-plugin:简化用于项目部署的Maven项目描述符

    根据范围排除依赖项 可选地包括传递依赖 根据xml标签名称删除pom.xml成员 用生成的pom.xml.flatten切换项目pom.xml Maven目标 插件演示 比较结果 原始 生成的 用法示例 测试项目 基础项目 Scala Identity ...

    全新Maven从入门到企业实战教程

    Maven 是目前流行的自动化构建工具,对于生产环境下...本课程将帮助你了解 Maven 的作用,常用命令,如何配置依赖,以及依赖的范围、依赖的传递性、依赖的排除、生命周期等重要概念,以及继承、聚合这样的 Maven 配置。

    dependency-dump

    将所有直接/传递依赖项打印为平面列表。 “可选”或在引用依赖项中被排除的依赖项不会打印到列表中。 确保在运行之前将项目安装到本地存储库中,否则将找不到中央(* -SNAPSHOT)中不存在的示例。 通过安装到本地,...

    spring-boot-autoconfigure-wro4j:一个spring-boot-autoconfigure库,它简化了https上wro4j库的使用

    如果要排除某些框架,当前必须使用构建系统排除传递依赖项的方式自行完成。 用法 如果您在类路径上使用Groovy,则库将类路径中的文件作为wro描述符。 如果groovy不存在,它将退回到。 请访问wro4j的以获取更多文档...

    cyclonedx-gradle-plugin:从Gradle项目创建CycloneDX软件物料清单(SBOM)

    CycloneDX Gradle插件CycloneDX Gradle插件创建一个项目的所有直接和传递依赖项的集合,并从结果中创建有效的CycloneDX物料清单文档。 CycloneDX是一种轻量级的BOM规范,易于创建,易于阅读且易于解析。用法执行: ...

Global site tag (gtag.js) - Google Analytics