欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Springboot配置maven-plugin:找不到符号、找不到程序包、配置可执行jar

程序员文章站 2022-04-29 23:45:09
...

一、问题描述:

使用springboot创建了maven项目,其中pom工程是restful-api,子模块有个common,还有个potn-api(在该模块中引用了我自己的common模块),项目结构如下图

Springboot配置maven-plugin:找不到符号、找不到程序包、配置可执行jar

之后我进行了如下操作:

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>

三、问题说明:

以下内容些许枯燥,但请认真理解:

  1. 首先我创建的common模块和potn-api模块都是springboot模块,其创建方式为:pom工程名称(restful-api)—》右键—》new—》Module—》Spring Initializr;
  2. springboot在使用maven insall打包时,默认会生成两个jar包,一个是普通的jar包(适用于其他项目引用),另一个是可执行的jar包,包含MANIFEST.MF文件夹。
    1. springboot首先创建普通的jar包;
    2. 然后,springboot会创建可执行jar包,在默认配置情况下,此时会把普通jar包的名字追加original,使其成为一个文件,然后把可执行jar包的名字设置为原来普通jar包的名称;
    3. 此时,potn-api模块中引用的jar包其实是可执行的jar包,固找不到需要的类;
  3. 通过spring-boot-maven-plugin的设置,对可执行jar包设置带有-exec的名称,这样原来的普通jar包就不会被覆盖掉了。