Spring Boot使用maven打包共有模块及其使用(IDEA)

1. 新建父子项目,子项目依赖父项目的maven

Step1: 使用maven新建项目。

a. 新建项目时选择maven,直接点击next

在这里插入图片描述
b. 分别指定GroupId、ArtifactId、Version。然后点击next。
在这里插入图片描述
c. 视情况更改项目名称,然后点击finish
在这里插入图片描述
d. 删除新建项目下的src, 删除后的项目路径如下。
在这里插入图片描述

Step2: 新建module作为子项目

a. 新建module
在这里插入图片描述
b. 使用maven建立module,直接next,步骤与Step1下的步骤类似。
在这里插入图片描述
c. 指定ArtifactId。然后点击next
在这里插入图片描述
d. 视情况修改module name。然后点击Finish
在这里插入图片描述
e. 新建完成,可以看到完成后的目录结构以及父项目pom中增加的内容
在这里插入图片描述

Step3: 完善该子项目

a. 在java文件下新建目录结构,将自己需要的工具类放在新建的文件下。
在这里插入图片描述
b. 修改auth-util下的pom中的内容,指定artifactId、groupId、version。作为第三方引用的前提,以及指定工具类所在的位置
在这里插入图片描述
c. 将子模块的maven依赖交给父模块来管理。在子模块(auth-util)中加入dependencies,这里并不指定版本号。如下图:
在这里插入图片描述
d. 父模块中加入dependencyManagement,来管理所有的依赖。如下图:
在这里插入图片描述
这里面要注意的是,项目是基于springboot的,所有springboot的依赖写在这里面,另外,像spring security的版本号会由springboot自动加载,这里面可以不指定它的版本号。

Step4: 使用maven打包到本地仓库

a. 选择Run Maven —> install 。这里要注意右击父项目进行maven打包
在这里插入图片描述
若打包过程中遇到提示source版本低的时候,在父项目的pom中加入如下代码

 <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

截屏如下:
在这里插入图片描述

2. 公共模块的使用

step1: 新建一个springboot项目

New Project–>Spring Initializr–>一路next。新建完成。
在这里插入图片描述

step2: 加入依赖

a. 在新建的项目的pom中加入上文新建好的子项目的依赖。

<dependency>
       <artifactId>auth-util</artifactId>
        <groupId>com.common.auth.util</groupId>
        <version>1.0</version>
 </dependency>

如下图所示:
在这里插入图片描述
b. 查看是否加入依赖成功。IDEA右侧有maven字样的,点击可以快速查看本项目所有的依赖
在这里插入图片描述
此时依赖加入成功,可以在本项目中使用auth-util下所有的工具类。

3. 工具类中涉及到mapper、@Component的处理

如下面的俩个类。MyUserDetailService上有@Component,该类交给spring容器管理,便于其他类使用时的注入;MyUserDetailServiceDao是基于mybatis的插叙数据库的mapper。
在这里插入图片描述
在这里插入图片描述

1.解决办法:

在新建的springboot项目中的启动类上面加入两个注解,一个是@MapperScan(basePackages = {“扫描mapper的路径”}),用于识别所有的mapper;另外一个是
@ComponentScan(basePackages = {“扫描spring管理的路径”}),该注解会屏蔽当前项目默认的扫描路径,所以这里面不仅要写依赖的包中的路径,也要把本项目需要扫描的包的路径写进去(所有的例如用到了@Component、@Controller、@Service等等的包)。
本例如下:
在这里插入图片描述

2.测试:

写完后,可以写一个controller来测试是否成功
因为本项目用到了mysql数据库,所以需要配置好数据源。这里就不做赘述了。

@RestController
public class TestController {

    @Resource
    MyUserDetailService myUserDetailService;

    @GetMapping("/test")
    public UserDetails getPassword(){
        UserDetails userDetails = myUserDetailService.loadUserByUsername("admin");
        return userDetails;
    }
}

使用Postman来检测该接口
在这里插入图片描述
测试通过后证明问题已解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值