当前位置:首页 > 开发 > 研发管理 > 正文

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

发表于: 2014-05-22   作者:chwshuang   来源:转载   浏览次数:
摘要:     大家都知道Maven的优点是依赖管理,特别是前期使用ANT的开发者都有很多感触。最近要开发一个java工程,定的要使用maven,会使用hadoop和hbase的客户端,而引入一个hadoop-client的jar或者hbase的jar包,会依赖十几个其他的jar包,而这些jar包的功能我又用不上,所以这种依赖反倒成了工程瘦身的负担。关键我还有强迫症,见到这些

    大家都知道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依赖排除 禁止依赖传递 取消依赖的方法

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Maven传递依赖 依赖的传递性。通过依赖设置解决了项目的CLASSPATH 问题,实际情况是我们依赖的项目
相同依赖级别,先加入的先依赖 不同依赖级别,级别短的先依赖 version-->SNAPSHOT xxx-里程碑--&
最简单的依赖 依赖是使用Maven坐标来定位的,而Maven坐标主要由GAV(groupId, artifactId, version
maven传递依赖的版本确定规则,也就是对重复的间接依赖的包的选择规则:   1. 在工程的依赖树上,
原文链接: http://blog.csdn.net/bluishglc/article/details/6584678  1. 在工程的依赖树上,深度越
maven传递依赖的版本确定规则,也就是对重复的间接依赖的包的选择规则:   1. 在工程的依赖树上,
原文链接: http://blog.csdn.net/bluishglc/article/details/6584678  1. 在工程的依赖树上,深度越
目录 我们项目中用到的jar包可以通过依赖的方式引入,构建项目的时候从Maven仓库下载即可。 1. 依赖
一:依赖范围 Maven在编译项目主代码的时候需要使用一套classpath。其次,在编译和执行测试的时候会
在Maven中有三大模块,分别是依赖、仓库、生命周期和插件,我们接下来下来介绍下依赖,为了方便起见
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号