天天看点

Springboot配置maven-plugin:找不到符号、找不到程序包、配置可执行jar一、问题描述:二、问题排查:三、问题说明:

一、问题描述:

使用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包就不会被覆盖掉了。