maven 传递依赖

1、maven 传递依赖scope=compile的包,比如:工程A依赖工程B,工程B依赖工程C,那么A工程的jar包含工程C中scope=compile的包

2、排除依赖用<exclusions>,如果A工程只想依赖B,不希望将B工程项下的C工程的包依赖进来,可以:

XML 复制代码
<exclusions>
    <exclusion>
         <groupId>*</groupId>
         <artifactId>*</artifactId>
    </exclusion>         
</exclusions>

3、当程序中遇到编译没问题,运行有问题时,需要查找工程的依赖树结构,看是否存在运行时需要的包 ,示例如下:

modeling-support工程依赖modeling-facade工程,modeling-facade工程依赖了metrics-api工程

modeling-support pom:

XML 复制代码
<dependency>
	<groupId>com.xxx</groupId>
	<artifactId>modeling-facade</artifactId>
</dependency>

modeling-facade pom:

XML 复制代码
<dependency>
	<groupId>com.xxx</groupId>
	<artifactId>metrics-api</artifactId>
	<exclusions>
		<exclusion>
			<groupId>*</groupId>
			<artifactId>*</artifactId>
		</exclusion>
	</exclusions>
</dependency>

metrics-api pom:

XML 复制代码
<dependency>
	<groupId>org.mvel</groupId>
	<artifactId>mvel2</artifactId>
</dependency>

当modeling-support 工程执行代码:Keval.eval(combinExpress, metricSourceIdMap);

由于Keval 是在metrics-api工程里面,所以传递依赖后,modeling-support对上述语句编译没问题,但是无法执行Keval.eval ,因为执行此代码需要mvel2的包,然而modeling-facade 工程已经排除了,所以modeling-support 工程也就没有这个jar,进而运行出错

相关推荐
红石榴花生油40 分钟前
Docker + Nginx 部署 Java 项目(JAR 包 + WAR 包)实战笔记
java·tomcat·maven
阿智智8 小时前
用Maven的quickstart archetype创建项目并结合JUnit5单元测试
java·单元测试·maven·junit5
程序猿_极客10 小时前
【2025 最新】 Maven 下载安装与配置教程(超详细带图文Windows 版):从入门到实战
java·开发语言·windows·maven·maven安装
多多*13 小时前
分布式中间件 消息队列Rocketmq 详解
java·开发语言·jvm·数据库·mysql·maven·java-rocketmq
皮皮林5511 天前
别再只会 mvn install 了!深入拆解 Maven 插件核心原理
java·maven
qwer12321ck761 天前
Maven在本地仓库缓存了失败的下载记录
缓存·maven
小池先生1 天前
Gradle vs Maven 详细对比
java·maven
DevOps探索之旅1 天前
Hadess入门到精通 - 如何管理Maven制品
maven·使用教程·hadess·国产开源制品管理工具
stay_awake__1 天前
Maven+mybatis
java·maven
七夜zippoe2 天前
Java 9+模块化系统(JPMS)详解:设计与迁移实践
java·开发语言·maven·模块化·jmm