maven 传递依赖的实现

 更新时间:2024年10月22日 11:31:47   作者:xujinwei_gingko  
本文主要介绍了Maven中传递依赖的处理方式,如scope=compile影响依赖传递,使用排除不需要的依赖,以及如何通过查看依赖树解决运行时错误,特别是在依赖排除后可能导致的运行时缺少必需包的问题,感兴趣的可以了解一下

1、maven 传递依赖scope=compile的包

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

2、排除依赖用<exclusions>

如果A工程只想依赖B,不希望将B工程项下的C工程的包依赖进来,可以:

<exclusions>
    <exclusion>
         <groupId>*</groupId>
         <artifactId>*</artifactId>
    </exclusion>         
</exclusions>

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

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

modeling-support pom:

<dependency>
	<groupId>com.xxx</groupId>
	<artifactId>modeling-facade</artifactId>
</dependency>

modeling-facade pom:

<dependency>
	<groupId>com.xxx</groupId>
	<artifactId>metrics-api</artifactId>
	<exclusions>
		<exclusion>
			<groupId>*</groupId>
			<artifactId>*</artifactId>
		</exclusion>
	</exclusions>
</dependency>

 metrics-api pom:

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

到此这篇关于maven 传递依赖的实现的文章就介绍到这了,更多相关maven 传递依赖内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中Map与对象之间互相转换的几种常用方式

    Java中Map与对象之间互相转换的几种常用方式

    在Java中将对象和Map相互转换是常见的操作,可以通过不同的方式实现这种转换,下面这篇文章主要给大家介绍了关于Java中Map与对象之间互相转换的几种常用方式,需要的朋友可以参考下
    2024-01-01
  • Springboot解决no main manifest attribute错误

    Springboot解决no main manifest attribute错误

    在开发Springboot项目时,使用java -jar命令运行jar包可能出现no main manifest attribute错误,本文就来介绍一下该错误的解决方法,感兴趣的可以了解一下
    2024-09-09
  • 详解java如何实现将数据导出为yaml

    详解java如何实现将数据导出为yaml

    这篇文章主要为大家详细介绍了java如何利用snakeyaml和freemarker实现将数据导出为yaml文件,文中的示例代码讲解详细,有需要的小伙伴可以参考一下
    2023-11-11
  • SpringBoot整合Swagger的方法示例

    SpringBoot整合Swagger的方法示例

    这篇文章主要介绍了SpringBoot整合Swagger的方法示例,详细介绍了SpringBoot如何整合Swagger以及swagger注解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Spring Boot整合Kafka教程详解

    Spring Boot整合Kafka教程详解

    这篇文章主要为大家介绍了Spring Boot整合Kafka教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Groovy的规则脚本引擎实例解读

    Groovy的规则脚本引擎实例解读

    这篇文章主要介绍了Groovy的规则脚本引擎实例解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java线程并发countdownlatch类使用示例

    java线程并发countdownlatch类使用示例

    javar的CountDownLatch是个计数器,它有一个初始数,等待这个计数器的线程必须等到计数器倒数到零时才可继续。
    2014-01-01
  • Spring中@Async的使用小结

    Spring中@Async的使用小结

    在Java开发中,我们常常会遇到需要执行耗时操作的场景,例如文件上传、网络请求等,本文将介绍如何在Java中使用异步方法,并探讨其中的一些注意事项,感兴趣的朋友跟随小编一起看看吧
    2024-01-01
  • JAVA中调用C语言函数的实现方式

    JAVA中调用C语言函数的实现方式

    这篇文章主要介绍了JAVA中调用C语言函数的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 如何设置springboot启动端口

    如何设置springboot启动端口

    spring boot是个好东西,可以不用容器直接在main方法中启动,而且无需配置文件,方便快速搭建环境。下面给大家介绍springboot启动端口的设置方法和spring boot创建应用端口冲突8080 问题,感兴趣的朋友一起看看吧
    2017-08-08

最新评论