首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

传递依赖和正常依赖的maven pom.xml排除

传递依赖和正常依赖是在使用Maven构建项目时,对于依赖管理的两种不同方式。

传递依赖是指当一个项目依赖于另一个项目时,如果被依赖的项目还依赖于其他项目,那么这些被依赖的项目也会被自动引入到当前项目中。这种依赖关系被称为传递依赖。传递依赖可以简化项目的依赖管理,但也可能引入一些不必要的依赖,增加项目的复杂性。

正常依赖是指在项目中明确声明所依赖的具体库或模块,而不考虑这些库或模块是否还依赖其他项目。这种依赖关系被称为正常依赖。正常依赖需要开发者手动管理每个依赖项,确保项目所需的所有依赖都被正确引入。

在Maven的pom.xml文件中,可以通过配置来控制传递依赖和正常依赖的行为。具体来说,可以使用<dependency>标签来声明项目的依赖,通过设置<scope>标签的值来指定依赖的范围。常用的依赖范围包括:

  • compile:默认的依赖范围,表示该依赖在编译、测试和运行时都可用。
  • test:表示该依赖仅在测试时可用,不会被打包到最终的发布包中。
  • provided:表示该依赖在编译和测试时可用,但在运行时由容器或环境提供,不会被打包到最终的发布包中。
  • runtime:表示该依赖仅在运行时可用,不参与编译和测试。

通过合理设置依赖的范围,可以控制传递依赖和正常依赖的行为。如果希望避免传递依赖,可以将依赖的范围设置为compile或provided。如果希望引入传递依赖,可以将依赖的范围设置为runtime。

总结起来,传递依赖和正常依赖是Maven中用于管理项目依赖的两种方式。传递依赖可以简化依赖管理,但可能引入不必要的依赖;正常依赖需要手动管理每个依赖项,确保项目所需的所有依赖都被正确引入。在pom.xml文件中,可以通过设置<scope>标签的值来控制依赖的范围,从而控制传递依赖和正常依赖的行为。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云开发者平台:https://cloud.tencent.com/developer
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb-for-mysql
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ai
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iotexplorer
  • 移动推送服务(信鸽):https://cloud.tencent.com/product/tpns
  • 对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯区块链服务(TBCS):https://cloud.tencent.com/product/tbcs
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Maven精选系列--依赖范围、传递排除

今天讲讲如何管理依赖,及依赖范围、传递性等特征。 添加依赖 下面我添加了一个spring-web依赖maven就会去下载spring-webjar包及它依赖一些jar包。...Maven2.0.9之后新增范围,只能用在中,并且导入type为pom类型父工程配置,一般用来解决多继承问题。...依赖传递 依赖传递前面讲过通过继承聚合方式可以达到,通过继承方式可以轻松从父项目继承过来,通过聚合方式也可以间接传递过来。...继承:A继承B,A就可以继承Bdependencies依赖。 聚合:A依赖C,C依赖D,那么A就要依赖D自然也就获取了D依赖。 下面这是dubbo直接依赖所有间接依赖关系列表。...依赖排除依赖传递过程中,如A依赖B、S2.0,B依赖C、S1.0,这样A就有了S1.0S2.0两个依赖,这样某些情况下会造成冲突需要手动把B间接传递过来依赖排除掉,就是不依赖B带过来S1.0

1.1K120

说说maven依赖冲突,依赖调解,依赖传递依赖范围

maven依赖冲突之前需要先说说maven 依赖传递依赖传递 当前项目引入了一个依赖,该依赖依赖也会被引入项目。...结论是:第一直接依赖范围第二直接依赖范围决定了传递依赖范围。...依赖冲突依赖调解 真是因为依赖传递,所以才带来了依赖冲突可能。比如A->X(1.0),A->B->X(2.0)。A直接依赖了1.0版本X,而A依赖B依赖了2.0版本X。...比如slf4j-log4jlogback这两个依赖是不能同时出现,但是因为他们坐标不一样,所以maven不会对齐进行处理。这个时候我们就需要手动进行 排除依赖 了。...,如果有许多相同间接依赖需要排除的话,会比较麻烦,可以参考:maven实现依赖“全局排除” 检查依赖冲突 因为maven依赖冲突发生时使用依赖调解,所以不会有任何提示。

1.2K30

maven可选依赖(Optional Dependencies)依赖排除(Dependency Exclusions)

我们知道,maven依赖关系是有传递。如:A-->B,B-->C。但有时候,项目A可能不是必需依赖C,因此需要在项目A中排除对A依赖。...在maven依赖管理中,有两种方式可以对依赖关系进行,分别是可选依赖(Optional Dependencies)以及依赖排除(Dependency Exclusions)。...在编译项目A时,是可以正常通过。 如果有一个新项目X依赖A,即:Project-X -> Project-A。此时项目X就不会依赖项目B了。...如果项目X用到了涉及项目B功能,那么就需要在pom.xml中重新配置对项目B依赖。...二、依赖排除 当一个项目A依赖项目B,而项目B同时依赖项目C,如果项目A中因为各种原因不想引用项目C,在配置项目B依赖时,可以排除对C依赖

5.2K60

【Android Gradle 插件】Gradle 依赖管理 ⑦ ( dependencies 传递依赖设置 | transitive 关闭依赖传递配置 | exclude 排除依赖配置 )

文章目录 一、dependencies 依赖传递层级 二、transitive 关闭依赖传递配置 三、exclude 排除依赖配置 Android Plugin DSL Reference 参考文档..., 执行 gradlew :app:dependencies 命令 , 可以打印出依赖库以及依赖依赖库层级 , +--- com.facebook.fresco:fresco:0.14.0 |...:fresco:0.14.0', { transitive false } } 在依赖后 , 增加一个闭包 , 使用逗号隔开 , 在闭包中配置 transitive false 选项 , 即不解析该依赖依赖...; 进行了上述设置后 , 调用 fresco 函数库肯定会出现问题 ; 三、exclude 排除依赖配置 ---- 设置 exclude 属性 , 可以排除依赖某个子依赖 , 并且在外部进行依赖...', module:'support-core-utils') } // 外部单独添加被排除 com.android.support:support-core-utils:24.2.1 依赖

81620

【Android Gradle 插件】Android 依赖管理 ⑥ ( 依赖冲突处理 | transitive 依赖传递设置 | exclude 依赖排除设置 | force 强制指定依赖库 )

就需要对该依赖库非常熟悉 , 最好是找出该依赖库位置 , 并 分析该依赖 Maven 配置文件 , 即 pom.xml 配置文件 ; 下面以 com.android.support:appcompat-v7...-23.3.0.pom 依赖配置文件 , 发现该 pom 文件中有配置 com.android.support:support-v4 依赖 , pom 配置文件是 Maven 依赖配置 , 其格式是...#exclude 方法函数原型如下 : /** * 添加排除规则以排除依赖传递依赖项。...* * 排除特定传递依赖项并不保证它不会出现 * 在给定配置依赖性中。 * 例如,没有任何排除规则某些其他依赖项, * 可能会引入完全相同传递依赖关系。...* 确保从整个配置中排除传递依赖项 * 请使用每个配置排除规则:{@link configuration#getExcludeRules()}。

2.7K31

Maven依赖管理 - 引入依赖

Maven依赖管理 - 引入依赖 依赖管理(引入依赖) 1.目标 能够掌握依赖引入配置方式 2.路径 导入依赖 导入依赖练习 依赖范围 3.讲解 3.1导入依赖 导入依赖坐标,无需手动导入jar包就可以引入...在pom.xml中使用标签引入依赖。 做项目/工作里面 都有整套依赖, 不需要背诵. 或者可以去Maven官网找, 复制,粘贴即可....在项目的 pom.xml 导入junit坐标依赖 image-20201213200004303 <!...image-20201213200903462 其中范围说明如下: compile 编译、测试、运行,A在编译时依赖B,并且在测试运行时也依赖 例如:strus-core、spring-beans...测试运行有效, 例如:jdbc驱动包 ,在开发代码中针对javajdbc接口开发,编译不用在运行测试时需要通过jdbc驱动包(mysql驱动)连接数据库,需要会打到war test:只是测试有效,

1.4K10

Dubbo调用maven依赖

参考: 1. dubbo调用maven依赖区别 2. maven依赖dubbo服务暴露调用区别? dubbo:跨系统通信。...dubbo需要将服务器B(提供方)接口类打成包,服务器B(提供方)去实现,客户端A(消费方)去调用。 maven依赖:在一个多modulemaven项目中,maven子模块间提供依赖实现调用。...而dubbo提供者消费者是两个独立服务(A只是调用B,并未拥有B)。...---- 一般dubbo会有服务提供端和服务调用端,服务提供端会提供接口interface接口实现类class,而常见开发方法都是接口实现类在不同项目里面,接口所在项目一般打包成jar形式,...它需要使用Maven安装到本地仓库中,实现类打包得看情况,如果是Spring MVC项目,一般打包成war形式,如果是Spring Boot项目,一般打包成jar形式,我们在调用端调用时候,只需要引入接口打包好

1.3K40

Maven依赖配置

project是所有pom.xml根元素,它还声明了一些POM相关命名空间及xsd元素。...—主要用于排除传递依赖-->                   …           <artifactId...每个依赖可以包含元素有: grounpId、artifactIdversion:以来基本坐标,对于任何一个依赖来说,基本坐标是最重要Maven根据坐标才能找到需要依赖。...大部分情况下,该元素不必声明,其默认值为jar scope:依赖范围 optional:标记依赖是否可选 exclusions:用来排除传递依赖 三、依赖范围 依赖范围就是用来控制依赖三种classpath...使用此依赖范围Maven依赖,对于测试运行classpath有效,但在编译主代码时无效。

82840

Maven依赖管理

依赖配置 2. 依赖传递 2.1 依赖传递冲突问题 2.2 可选依赖 2.3 排除依赖 3. 依赖范围 4. 依赖范围传递性 1....依赖传递 直接依赖:在当前项目中通过依赖配置建立依赖关系 间接依赖:项目的依赖如果依赖其他资源,当前项目间接依赖其他资源 2.1 依赖传递冲突问题 路径优先:当依赖中出现相同资源时,层级越深,优先级越低...,层级越浅,优先级越高 声明优先:当资源在相同层级被依赖时,配置顺序靠前覆盖配置顺序靠后 特殊优先:当同级配置了相同资源不同版本,后配置覆盖先配置(在一个pom中) 2.2 可选依赖 可选依赖指对外隐藏当前所以来资源...排除依赖指主动断开依赖资源,被排除资源无需指定版本–不需要 junit junit</artifactId...依赖范围传递性 带有依赖范围资源在进行传递时,作用范围将受到影响 到此,本章内容就介绍完啦

75420
领券