maven管理项目的过程中碰到这样一个问题,引用同项目组的同事开发的第三方jar包,开发完成后编译也通过了,但是在启动的过程中,结果怎么都找不到引用的别人项目jar包下面所有的类,引用的jar是snapshort包,在idea中将所有冲突的jar都清楚了之后,问题还是没有解决。
在pom.xml中依赖的jar是
<dependency>
<groupId>com.mintq.bigdata.platform</groupId>
<artifactId>mintq-bdp-kafka</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
最后发现 maven install 之后,在生成的项目jar中的
,在这个文件中打开之后,查看编译的snapshot包,看到的是
,这是一个带有时间戳的版本,因此找不到对应的jar包。
分析原因可能是上传了同一版本号的多个snapshot版本,编译之后找不到pom.xml中的jar包。
可以通过两种方式来解决这个问题,第一种方法:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.test.Application</mainClass>
<classpathPrefix>dependency/</classpathPrefix>
<useUniqueVersions>false</useUniqueVersions>
</manifest>
</archive>
</configuration>
</plugin>
中添加<useUniqueVersions>false</useUniqueVersions>,这样编译之后仍然是mintq-bdp-kafka-0.0.1-SNAPSHOT.jar包,就可以找到对应的该jar中的类了。
第二种方案:
将snapshot版本的jar修改为release版本,并上传到私服,从私服下载release版本,也可以解决该问题