idea中使用maven进行多模块打包部署时jar包中无依赖的问题(示例:jar包才5k,且无法正常启动)

文章讲述了在Maven多模块项目中遇到的打包问题,特别是关于jar包缺少依赖的问题。解决方案包括在父工程设置打包类型为pom,确保子模块的maven-compiler-plugin和maven-surefire-plugin配置,以及在含有主加载类的模块中配置spring-boot-maven-plugin来包含依赖并指定主类。通过在父工程执行clean,install,package流程进行打包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

模块关系:

  • A:代表父工程
  • B:代表WEB模块,主加载类所在模块
  • S:业务处理模块
  • D:数据处理模块
  • E:基础模块

依赖关系如下:

  • D依赖E
  • S依赖E
  • B依赖D,B依赖S

第一次进行maven多模块的打包,在打包过程中遇到了些许问题(模块关系与依赖关系如上所述):

  1. 如何进行打包
  2. 打包后jar包过小,检查后发现其中没有lib依赖

image-20230318003308569

问题解决

**注意:**父工程中打包方式需要设置为pom,子工程中不需要设置打包方式

示例:

<packaging>pom</packaging>

A模块pom文件配置

即父工程的pom.xml文件

注意:

  • pom 中一定要指定 maven-compiler-pluginmaven-surefire-plugin 插件。
  • <packaging>pom</packaging> 打包类型写 pom 包。
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <skipTests>true</skipTests>    <!--默认关掉单元测试 -->
            </configuration>
        </plugin>
    </plugins>
</build>

B模块pom文件配置

主加载类所在模块,如果有多个模块有主加载类,则都需要加上

注意:

  • 子 pom 文件中一定要指定spring-boot-maven-plugin插件和主启动类的 全类名
  • <packaging>jar</packaging>打包类型写 Jar包。(这个我不确认,我没有加,如果不行的话可以加上试试)
<!--spring boot打包的话需要指定一个唯一的入门-->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 指定该Main Class为全局的唯一入口 -->
                <mainClass>com.lzj.WebDemoApplication</mainClass>
                <layout>ZIP</layout>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <!--可以把依赖的包都打包到生成的Jar包中-->
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

打包

在父工程下进行打包(有root标识)

**步骤:**点击Maven->点击父工程(如图中是aws_demo)->Lifecycle->clean->install->package

打完包后就可以进行部署了

image-20230318002855238

总结

经过上述打包操作后,拥有主加载类的模块中的jar包就可以在linux或windows中去运行了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的大雄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值