Springboot配置maven-plugin:找不到符号、找不到程序包、配置可执行jar
程序员文章站
2022-04-29 23:45:09
...
一、问题描述:
使用springboot创建了maven项目,其中pom工程是restful-api,子模块有个common,还有个potn-api(在该模块中引用了我自己的common模块),项目结构如下图
之后我进行了如下操作:
1.maven clean common模块 ok
2.maven install common模块 ok
3.maven clean potn-api模块 ok
4.maven install potn-api模块 报错:找不到common模块中的某些程序包,不认识某些标点
二、问题排查:
1.首先确认potn-api中是否有引用到了common模块:ok
2.然后百度资源,有清缓存的,配置importing的,我都试过了,但是最后都不生效: 不ok
3.最后在pom工程restful-api下的pom文件中添加了如下代码:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <classifier>exec</classifier> </configuration> </plugin> </plugins> </build>
三、问题说明:
以下内容些许枯燥,但请认真理解:
- 首先我创建的common模块和potn-api模块都是springboot模块,其创建方式为:pom工程名称(restful-api)—》右键—》new—》Module—》Spring Initializr;
- springboot在使用maven insall打包时,默认会生成两个jar包,一个是普通的jar包(适用于其他项目引用),另一个是可执行的jar包,包含MANIFEST.MF文件夹。
- springboot首先创建普通的jar包;
- 然后,springboot会创建可执行jar包,在默认配置情况下,此时会把普通jar包的名字追加original,使其成为一个文件,然后把可执行jar包的名字设置为原来普通jar包的名称;
- 此时,potn-api模块中引用的jar包其实是可执行的jar包,固找不到需要的类;
- 通过spring-boot-maven-plugin的设置,对可执行jar包设置带有-exec的名称,这样原来的普通jar包就不会被覆盖掉了。
下一篇: linux 安装php扩展记录