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,进而运行出错

相关推荐
天空鸟_时光不老12 小时前
07-检查点与状态持久化
java·人工智能·spring boot·spring·spring cloud·kafka·maven
天空鸟_时光不老12 小时前
09-RAG问答系统落地:从默认分割器的坑到Milvus召回调优
java·人工智能·spring boot·spring·spring cloud·maven·mybatis
天空鸟_时光不老14 小时前
10-Agent安全隐患与SQL执行层加固
java·数据库·人工智能·sql·spring·maven·mybatis
砚底藏山河2 天前
量化实战:截面因子有效性检验(IC 分析与分层回测)
java·python·金融·maven
java、iOS、Vue2 天前
Maven antrun vs Jenkins 脚本组装 deb的优缺点、适用场景
java·jenkins·maven
砚底藏山河3 天前
量化实战:回测数据底座快照与版本管理进阶
java·大数据·python·金融·maven
砚底藏山河5 天前
量化实战:行情数据 Schema 演进与向后兼容
java·python·金融·maven
程序猿乐锅6 天前
【黑马点评 | 第十一篇】关注 Feed 流实现
java·数据库·redis·分布式·后端·缓存·maven
java_nnnn7 天前
Spring Boot 快速上手:从 Maven 到第一个 Controller
java·spring·java-ee·maven