记一次maven项目引用不到子项目jar包的问题

时间:2024-03-21 20:38:32

最近碰到问题 :web项目引用biz项目  ,启动时报错如下

 Cannot find class [com.aa.service.inf.kms.client.DataSource] for bean with name 'DataSource' defined in URL [jar:file:/Users/aa/eclipse-workspace-new/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/A/WEB-INF/lib/B-1.0-SNAPSHOT.jar!/conf/spring/context.xml]; nested exception is java.lang.ClassNotFoundException: com.aa.service.inf.kms.client.DataSource
	at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1391) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]

分析可能性有以下几中:

1、biz项目中的pom是不是有引入这个包,web项目的lib文件夹下边是否能下载下来这个包(java-client-0.7.6)

2、是否之前已经引入过包(java-client-0.6.1)和当前biz引入的包(java-client-0.7.6)产生版本冲突eclipse中解决方案

(1)直接使用maven命令:

dependency:tree -Dverbose

(2)直接搜索:

记一次maven项目引用不到子项目jar包的问题

3、父项目用effective pom模式查看发现包(java-client-0.6.1)的版本(如下图)和当前biz引入版本(java-client-0.7.6)不一致,至于为什么父项目出现java-client-0.6.1这个版本我目前也没搞明白

记一次maven项目引用不到子项目jar包的问题

解决方案为直接在父项目中引入版本(java-client-0.7.6)覆盖之前的版本(java-client-0.6.1)然后再在子项目biz中引用改版本(java-client-0.7.6)具体配置如下:

父项目中引用代码:

            <dependency>
             <groupId>com.aa.service.inf</groupId>
			 <artifactId>java-client</artifactId>
			 <version>0.6.7</version>
 			</dependency>

子项目中引用代码:版本号默认继承父项目版本0.6.7

        <dependency>
			 <groupId>com.meituan.service.inf</groupId>
			 <artifactId>kms-java-client</artifactId>		 
 		</dependency>

 

4、web项目引入biz项目的时候,biz项目是否将该包排除在外(我犯的脑残问题就是这个)排查错误方式为:直接看web项目的lib下边能不能下载到java-client-0.6.7的包

  <dependency>
            <groupId>com.aa.finance.ebs</groupId>
            <artifactId>biz</artifactId>
            <exclusions>
                 <exclusion>
                	<groupId>com.aa.service.inf</groupId>
                	<artifactId>java-client</artifactId>
                </exclusion> 
            </exclusions>
        </dependency>