Maven聚合的springboot项目打包构建jar包

话不多说,直接进入正题(maven版本3.5.4):

聚合项目结构:

其中父模块的打包方式为pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.pjqdyd</groupId>
    <artifactId>slife-dev</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>Slife-dev</name>
    <description>slife-dev-back-end</description>

    <modules>
        <module>slife-dev-common</module>
        <module>slife-dev-pojo</module>
        <module>slife-dev-dao</module>
        <module>slife-dev-service</module>
        <module>slife-dev-api</module>
    </modules>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/>
    </parent>
</project>

子模块的打包方式都为<packaging>jar</packaging>
子模块间的依赖关系为:
common --> pojo --> dao --> service -->api
其中:
common层定义一些基本的springframework的依赖, 方便下面的模块继承.
pojo是实体类层.
dao是数据持久层.
service是业务逻辑层.
api是web接口层(Controller层).

在其中的api层(springboot启动主类在这一层),也就是最顶级的子模块的pom添加maven打包springboot项目插件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>slife-dev</artifactId>
        <groupId>com.pjqdyd</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>slife-dev-api</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.pjqdyd</groupId>
            <artifactId>slife-dev-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

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

接下来在父模块下运行命令:mvn clean package -Dmaven.test.skip=true

控制台提示信息如图,表示成功:

可以看见maven自动根据我们模块的依赖顺序构建好了项目.

到这一步,我们的jar包就已经打包好, 我们直接到api模块下的target目录下找到slife-dev-api-1.0-SNAPSHOT.jar可执行jar包,这里我复制到桌面运行即可:

注意:

  1. mvn打包springboot项目的插件不能放在父模块的pom中, 因为这会让子模块都继承这个插件, 在子模块common, pojo, dao, service中是没有主类的,所以打包时会提示找不到主类.

2.那么如果刚开始在slife-dev-api子模块下运行打包命令会怎样呢?, 其实这里会提示找不到service的jar包, 因为api模块依赖service, 解决方法是先将所有子模块都install到本地,直接在父模块下运行mvn clean install -Dmaven.test.skip=true就行了.

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

相关阅读更多精彩内容

  • Maven的基本了解 什么是Maven? Maven就是Apache下的一个开源项目。它是用纯java开发的。是一...
    Bcome阅读 3,197评论 0赞 7
  • Maven最佳实践:划分模块 所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml...
    我不是T先生阅读 2,873评论 0赞 4
  • 1. 操作步骤 将多个子项目聚合在一个父工程中,子项目中,可引入parent标签,即:继承父工程。 创建其他的mo...
    小胖学编程阅读 4,630评论 0赞 8
  • 逅弈 转载请注明原创出处,谢谢! 以前的日子 以前我们写代码时,jar包都默认放在一个叫 /lib 的目录下,然后...
    逅弈阅读 3,266评论 3赞 45
  • 看到茗的成绩,心顿入冰窖。 失望,痛苦,无奈,交织着像一只无形的手,在心里捏一下揉一下搓一下。整个人的...
    sea123阅读 653评论 2赞 2

友情链接更多精彩内容