springboot多模块引用 打包项目

场景:springboot构建多模块helloserviceapi和helloservice,其中helloservice引用helloserviceapi的jar包,打包B模块时报错,如下:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project hello-service: Compilation failure: Compilation failure: 
[ERROR] /D:/WorkSpace/IntelliJIDEA/spring-cloud/spring-cloud/hello-service/src/main/java/com/example/helloservice/Controller/RefactorHelloController.java:[3,39] �����com.example.helloserviceapi.dto������
[ERROR] /D:/WorkSpace/IntelliJIDEA/spring-cloud/spring-cloud/hello-service/src/main/java/com/example/helloservice/Controller/RefactorHelloController.java:[4,43] �����com.example.helloserviceapi.service������
[ERROR] /D:/WorkSpace/IntelliJIDEA/spring-cloud/spring-cloud/hello-service/src/main/java/com/example/helloservice/Controller/RefactorHelloController.java:[14,49] �Ҳ�������
[ERROR]   ����: �� HelloService
[ERROR] /D:/WorkSpace/IntelliJIDEA/spring-cloud/spring-cloud/hello-service/src/main/java/com/example/helloservice/Controller/RefactorHelloController.java:[21,12] �Ҳ�������
[ERROR]   ����:   �� User
[ERROR]   �: �� com.example.helloservice.Controller.RefactorHelloController
[ERROR] /D:/WorkSpace/IntelliJIDEA/spring-cloud/spring-cloud/hello-service/src/main/java/com/example/helloservice/Controller/RefactorHelloController.java:[26,38] �Ҳ�������
[ERROR]   ����:   �� User
[ERROR]   �: �� com.example.helloservice.Controller.RefactorHelloController
[ERROR] -> [Help 1]


出现乱码,但是没有找到解决乱码的办法,但是从百度的结果看,应该是提示 程序包com.example.helloserviceapi.dto不存在

解决办法:修改helloserviceapi模块中maven插件配置

原来配置


        
            
                org.springframework.boot
                spring-boot-maven-plugin                
            
        
    

修改后配置


        
            
                org.springframework.boot
                spring-boot-maven-plugin
                 <-- 添加内容 -->
                
                    exec
                
            
        
    

原理:

spring boot工程打包编译时会生成两种jar包,一种是普通的jar,一种是可执行的jar。默认情况下,两个jar包名称相同,在不做配置的情况下,普通的jar先生成,可执行的jar后生成,所以可执行jar会覆盖普通的jar。我们在项目引用时,需要的是普通的jar,不需要可执行的jar。

参考链接:https://www.cnblogs.com/ITPower/p/10015471.html

注:如果哪位大佬解决了打包后控制台乱码的情况,请告知,谢谢!

你可能感兴趣的:(maven)