美文网首页
构建 Maven 聚合工程

构建 Maven 聚合工程

作者: qyfl | 来源:发表于2019-12-29 21:08 被阅读0次

maven 聚合工程是使用 maven 将多个工程打包,工程之间可以互相依赖,多个工程的公共依赖库可以在父工程中统一引入。

1、新建一个空的 maven 工程

不需要 src 目录, pom.xml 内容如下

<?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.qyfl</groupId>
    <artifactId>imooc.ad</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>pom</packaging>
    <name>imooc-springcloud-ad</name>
    <description>test SpringCloud project</description>
</project>

packaging 节点的内容是 pom,意思是这是工程的作用是管理其他工程用的,里面没有业务代码。

name 节点和 description 的作用是给这个总的工程起一个名字和介绍。

2、在父工程下新建具体的子工程。

当父工程建立好之后,可以在父工程中新建子工程(IDEA 中叫做 Modul),每个子工程新建好之后,父工程的 pom 文件中会自动新增 modules 节点。例如:

<?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.qyfl</groupId>
    <artifactId>imooc.ad</artifactId>
    <version>1.0-SNAPSHOT</version>
    
    <packaging>pom</packaging>
    <name>imooc-springcloud-ad</name>
    <description>test SpringCloud project</description>

    <modules>
        <module>ad-eureka</module>
    </modules>
</project>

此时可以在子工程下面写业务代码。

3、 管理子工程中公共的依赖

子工程中公共的依赖可以在父工程的 pom.xml 中引入,例如:

<?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.qyfl</groupId>
    <artifactId>imooc.ad</artifactId>
    <version>1.0-SNAPSHOT</version>


    <modules>
        <module>ad-eureka</module>
        <module>ad-getway</module>
        <module>imooc-ad-service</module>
    </modules>


    <packaging>pom</packaging>
    <name>imooc-springcloud-ad</name>
    <description>test SpringCloud project</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.2.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

子工程的 pom.xml 也需要做一些修改,例如:

<parent>
    <artifactId>imooc.ad</artifactId>
    <groupId>com.qyfl</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

这个节点可能在子工程新建的时候就会自动加上。

如果子工程之间需要相互引入依赖可以在 dependencies 中新增节点的方式完成,例如:
<dependencies>
    <dependency>
        <groupId>com.qyfl</groupId>
        <artifactId>ad-common</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

如果在 IDEA 中使用 Maven 聚合工程,需要每次修改 pom 文件之后点击,具体修改工程下的 install,例如:


Maven 管理

相关文章

网友评论

      本文标题:构建 Maven 聚合工程

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