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 传递依赖内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论