美文网首页
Maven聚合的springboot项目打包构建jar包

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

作者: pjqdyd | 来源:发表于2019-05-11 15:57 被阅读0次

话不多说,直接进入正题(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就行了.

相关文章

网友评论

      本文标题:Maven聚合的springboot项目打包构建jar包

      本文链接:https://www.haomeiwen.com/subject/ovsxaqtx.html