`

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依赖小例子

    Maven依赖管理遵循“传递性”原则,即如果你的项目依赖A库,而A库又依赖B库,Maven会自动将B库也一并引入。这大大简化了项目的构建过程,但同时也可能导致依赖冲突,需要通过排除机制或调整依赖版本来解决。 在`...

    Maven 依赖详细理解.pdf

    依赖范围(scope)是Maven依赖管理的一个重要概念。scope定义了依赖项的使用范围,主要有以下几个选项:compile、provided、runtime和test。compile表示依赖项在编译时需要,provided表示依赖项在编译和测试时需要,但...

    Maven的依赖验证项目

    在压缩包中的“Maven依赖特性”可能包含了一些特定的示例或者配置,用于展示Maven如何处理不同类型的依赖特性,例如:范围(scope,如compile、test等)、排除依赖、强制版本等。通过实际操作这些例子,你可以更深入...

    ​实现maven项目中多版本依赖兼容使用解决方案

    Maven依赖管理遵循“传递性”原则,即项目可以直接依赖其他项目,间接依赖也会被自动引入。当出现相同类路径的冲突时,Maven会遵循“第一声明者优先”原则,即先声明的依赖版本优先。 2. **排除依赖(Exclusions)...

    试试 IDEA 解决 Maven 依赖冲突的高能神器.docx

    总的来说,解决Maven依赖冲突需要理解其工作原理,结合IDEA提供的工具,如Maven Helper插件和依赖结构图,可以有效地定位和排除冲突,保持项目的稳定性和可维护性。在实际开发中,避免引入不必要的依赖和定期清理...

    apache-maven3.5 依赖包

    2. **理解依赖传递性**:Maven会自动处理依赖的依赖,但可能会导致依赖冲突,需要通过 `&lt;exclusions&gt;` 标签排除不需要的子依赖。 3. **管理本地仓库**:定期清理无用的旧版本依赖,避免仓库过大影响性能。 4. **使用...

    MavenHelper插件 帮你检查maven的各种冲突

    3. **排除依赖**:如果某个依赖导致了冲突,MavenHelper允许你直接在IDE内排除该依赖,减少了在pom.xml文件中手动编辑的繁琐步骤。 4. **依赖更新**:插件会显示每个依赖的最新版本,帮助你保持项目依赖的最新状态,...

    MavenHelper

    总之,"MavenHelper"是Java开发者处理Maven依赖冲突的理想工具。通过它,开发者可以更有效地管理项目中的依赖关系,避免因冲突带来的困扰,从而提高开发效率和项目质量。在实际开发中,熟练掌握并运用这款插件,无疑...

    Maven学习笔记

    Maven依赖的排除** 当一个依赖包含不必要的子依赖时,可以通过在POM文件中指定`&lt;exclusions&gt;`来排除不需要的库。 **9. Maven继承** - Maven的继承机制允许一个父POM管理多个子POM,统一管理依赖版本,减少重复信息...

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

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

    maven helper idea 插件

    `Maven Helper`还提供了优化Maven配置的建议,如减少无效的依赖、优化传递依赖等,以提升构建速度。 总的来说,`Maven Helper`是一款强大且实用的IDEA插件,它以直观的方式处理Maven项目中的依赖管理问题,使得...

    Maven 3.5.0版本资源

    它能更准确地解决传递性依赖,同时提供更好的依赖排除策略。 3. **插件管理**:Maven 3.5.0对插件管理进行了改进,支持更灵活的插件版本策略,允许开发者指定插件的精确版本,防止因插件版本问题导致的构建失败。 ...

    Maven资料大合集

    此外,Maven支持排除依赖、传递依赖和依赖范围(如编译、测试等)的概念。 5. **插件机制** Maven的灵活性得益于其强大的插件系统。开发者可以通过编写插件实现自定义构建任务,如编译源码、生成文档、执行单元...

    Maven指南阅读笔记

    在阅读"Maven指南"的过程中,我们可以学习到几个关键知识点,包括:解决依赖冲突、排除不必要的传递性依赖、处理已提供构件以及利用`dependencyManagement`元素和`parent`元素的区别。 首先,当我们遇到`groupId`和...

    Maven的Dependency测试

    1. **Maven依赖管理** Maven的`dependency`标签用于在`pom.xml`文件中声明项目所依赖的外部库。这些依赖可以是JAR文件,也可以是其他Maven项目。依赖管理包括指定依赖的`groupId`(组织ID)、`artifactId`(项目ID...

    maven系统的思维导图总结

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

    尚硅谷_Maven.doc

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

Global site tag (gtag.js) - Google Analytics