maven多模块项目中子模块可以运行,打包报错

项目结构为:


项目结构
  • 父模块为:localdeployment-server
  • 子模块为:main
  • extend也是子模块,并且依赖main模块

今天打包时候发现extend模块报错,找不到依赖的main模块中的类,查了诸多文章后了解到使用spring-boot-maven-plugin进行打包时会自动生成两种jar:

  1. 普通jar。
  2. 可以直接使用java -jar *运行的可执行jar包。

这两种jar默认是同名的,并且普通的jar会被可执行jar覆盖掉。可执行jar包不同于普通的jar,不可以被其他模块所依赖。所以导致extend模块找不到类。
详情可以参考:

maven模块依赖,正常运行,打包报错找不到包

定位到问题后解决就很容易了,只要不让生成的可执行jar将普通jar覆盖掉就可以了,我门将其改个名称,将pom文件中打包插件配置改为:

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

打包成功:

[INFO] Reactor Summary:
[INFO] 
[INFO] localdeployment-server 1.0-SNAPSHOT ................ SUCCESS [  0.009 s]
[INFO] main 0.0.1-SNAPSHOT ................................ SUCCESS [ 13.142 s]
[INFO] extend 1.0-SNAPSHOT ................................ SUCCESS [  0.770 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  14.792 s
[INFO] Finished at: 2020-07-29T10:03:27+08:00
[INFO] ------------------------------------------------------------------------

这样打包后就有两个jar了:

打包后的jar包

main-0.0.1-SNAPSHOT-exec.jar 就是我们的可执行jar。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容