今天在项目中通过使用idea工具打包maven项目的时候,由于使用了外部自定义的jar包,在生成package的jar包的时候启动报错,错误显示的是缺少自定义jar包中的class类,这里是使用的springboot测试项目,在项目中使用了动态加载bean,关于动态加载bean请参考前面的文章http://357029540.iteye.com/blog/2389375,找了很久也没有发现原因,明明生成的lib文件夹下面有外部的导入包,可是依然报错,后来把生成的jar包打开才发现原来META-INF文件夹下的MANIFEST.MF文件的class-path下缺少了自定义的外部jar包的引用,把外部jar包的引用添加进去后就不报错了,至于为什么打包的时候会缺少外包jar的引用,没有找到具体原因。
外部引入本地jar的方式(非.m2下面的)是:
<dependency> <groupId>com.dynamic</groupId> <artifactId>testDynamicBean</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>f:/testDynamicBean-1.0-SNAPSHOT.jar</systemPath> </dependency>如果不想使用本地jar包的导入方式,即打包到.m2下面后再引入不使用
<scope>system</scope> <systemPath>f:/testDynamicBean-1.0-SNAPSHOT.jar</systemPath>这部分配置,我们可以通过使用 mvn install:install-file -Dfile= f:/testDynamicBean-1.0-SNAPSHOT.jar -DgroupId= com.dynamic -DartifactId= testDynamicBean -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true 的方式把该jar执行到.m2的目录下就可以直接如下使用了:
<dependency> <groupId>com.dynamic</groupId> <artifactId>testDynamicBean</artifactId> <version>1.0</version> </dependency>