引入一个boot模块坑

2022-08-21 13:39:34 浏览数 (1)

这个坑蛮棘手的

事发场景:main-boot引入common-boot模块,common-boot模块是一个spring-boot模块

关键GAV构成如下:

common-boot

代码语言:javascript复制
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.7</version>
    <relativePath/>
</parent>

<groupId>com.ruben</groupId>
<artifactId>common-boot</artifactId>
<version>0.0.1-SNAPSHOT</version>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

其中common-boot我们编写一个IService

代码语言:javascript复制
package com.ruben.service;

/**
 * 接口
 *
 * @author VampireAchao
 * @since 2022/5/15 10:23
 */
public interface IService {
}

然后拿到main-boot中引用

main-bootpom.xml

代码语言:javascript复制
<dependencies>
    <dependency>
        <groupId>com.ruben</groupId>
        <artifactId>common-boot</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>

写个实现类继承

代码语言:javascript复制
package com.ruben.service.impl;

import com.ruben.service.IService;

/**
 * 服务实现类
 *
 * @author <achao1441470436@gmail.com>
 * @since 2022/5/15 10:24
 */
public class ServiceImpl implements IService {
}

然后我们首先mvn install一下common-boot

我们尝试在main-boot进行mvn compile却发现编译报错

说是找不到符号

此时我们其实可以根据common-bootjar拆包查看

发现其目录结构不太对劲

我们的包变成了BOOT-INF

这时候我们可以在common-bootpom.xml配置一下spring-boot-maven-plugin

configuration下设置skiptrue

代码语言:javascript复制
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
    </plugins>
</build>

或者干脆直接去掉这个plugin配置

再次mvn install打包、解包,发现正常了

然后我们在main-boot再次进行编译,发现成功

注意如果还是不成功,我们可以清除一下idea缓存,或者执行这里的命令进行刷新依赖、重新生成idea项目模块配置文件

0 人点赞