spring-boot-maven-plugin打包遇到的问题使⽤spring-boot-maven-plugin打包遇到的问题
最近在做springboot项⽬,导⼊了 spring-boot-maven-plugin 插件,采⽤分模块依赖
项⽬⽬录和关系依赖
作为⽬的我想把它们打成jar包从⽽放在服务器上运⾏
⾸先我们先以common 和 eurekaserver 包为例
当然 我们查看项⽬target 和本地仓库 发现已经打包好了
当然没有出现问题,打出的来的jar包也是可以正常运⾏。
当我们再来打message包的时候,我们采⽤ mvn package运⾏
最后我们发现打包失败。
Failed to execute goal on project eSite-message: Could not resolve dependencies for project site.huzy:eSite-
message:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at site.huzy:eSite-common:jar:0.0.1-SNAPSHOT: Failed to read artifact descriptor for site.huzy:eSite-common:jar:0.0.1-SNAPSHOT: Could not find artifact site.huzy:eSite-parent:pom:0.0.1-SNAPSHOT -> [Help 1]
当然我们本地仓库已经有了common的依赖,但是为什么会报错呢?
查了很多资料,⼤多没⽤,最后在这边⽂章⾥⾯到了答案
spring-boot-maven-plugin打包出来的jar是不可依赖的
我们现在整合后的maven项⽬有⼀个parent⼯程,打包类型为pom,下⾯多个spring-boot⼯程作为它的module,分别为base和moduleA,moduleB。假如moduleA依赖于base。如果你在base中使⽤了spring-boot-maven-plugin的默认配置build,或者在parent⼯程中使⽤spring-boot-maven-plugin的默认配置build。那么在clean package的时候会发现moduleA不到base中的类。原因就是默认打包出来的jar是不可依赖的。
解决⽅案
官⽅告诉我们,你如果不想移代码,好吧,我这样来给你解决,给你打两个jar包,⼀个⽤来直接执⾏,⼀个⽤来依赖。于是,你需要指定⼀个属性classifier,这个属性为可执⾏jar包的名字后缀。⽐如我设置exec,原项⽬名为Vehicle-business。那么会得到两个jar:Vehicle-business.jar和Vehicle-bussiness-exec.jar
maven打包本地jar包官⽅⽂档位置:84.5 Use a Spring Boot application as a dependency
总结:回到聚合maven上,如果你在parent⼯程中使⽤了spring-boot-maven-plugin作为builder,那么你的依赖module⼀定要⽤解决⽅案⼆来设置。否则你不在parent⼯程中⽤spring-boot-maven-plugin作为builder,⽽在需要打包的module上使⽤。
在次级依赖添加< configuration >< classifier >exec< /classifier ></ configuration>
最后我们进⼊⼯程
⾸先先执⾏mvn package && mvn install 对⽗⼯程进⾏打包
我们看到本地仓库已经存在依赖
最后我们对message进⾏打包,我们发现成功!
最后我们发现已经打包成功了。
如果不⾜,请各位留⾔和补充。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论