JAVA中创建多模块项目

文章 , 技术分享
236 0

JAVA中创建多模块项目

1.创建父模块删除多余文件,只留下这三个文件

创建父模块

2.创建子模块,删除多余文件和启动文件

创建子模块

删除多余文件只留下必须文件

删除多余文件只留下必须文件

同时在创建一个web模块

同时在创建一个web模块

3.配置父文件中pom,设置子模块,设置parent

设置打包方式

<!--    父模块的打包方式-->
    <packaging>pom</packaging>
<!--声明子模块的依赖-->
    <modules>
        <module>web</module>
        <module>sesrvice</module>
    </modules>

设置parent

<!--    指明继承关系-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.17</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

4.配置子模块中的parent

子模块中继承关系要改为父模块的

 <parent>
        <groupId>com.example</groupId>
        <artifactId>rabbat-mq</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

同时web中可以引入service模块

<!--        将另一个子模块进入进来-->
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>sesrvice</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

写一个测试接口

测试接口

java类

访问进行验证

访问验证

可能出现的问题:

1.注意删除相对路径、父模块中配置主启动文件

删除相对路径

配置主启动类

<mainClass>com.dake.shop.ShopOrderApplication</mainClass>

2.编译失败:程序包xxx不存在

解决方案:

在common子工程下的pom.xml,添加以下配置

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

原因分析:

common也是SpringBoot工程,SpringBoot工程打包编译时,会生成两种jar包,一种是普通的jar,另一种是可执行jar。

默认情况下,这两种jar的名称相同,在不做配置的情况下,普通的jar先生成,可执行jar后生成,造成可执行jar会覆盖普通的jar。而projectA工程无法依赖common工程的可执行jar,所以编译失败:程序包xxx不存在。

jar包配置

添加配置后截图如下,其中common-1.0-SNAPSHOT-exec.jar为可执行jar,common-1.0-SNAPSHOT.jar为普通jar包。

3.使用scanBasePackages将service的包手动导入进来,防止在web中使用@autowirte进行引入service中方法时无法使用

scanBasePackages封装

最后更新 2023-11-23
评论 ( 0 )
OωO
隐私评论