Maven的父子工程的三种方式

第一种方式

父子工程模块并列
项目视图:
在这里插入图片描述

父工程的pom.xml

maven父工程必须遵循以下两点要求:
1.packaging标签的文本内容必须设置为pom
2.把src目录删除掉

<?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.bjpowernode.maven</groupId>
<artifactId>001-maven-parent</artifactId>
<version>1.0.0</version>

<!--
    packaging标签的是指定打包的方式
    默认为jar,如果pom文件中没packaging标签那么默认就是打jar
-->

<!--
    pom是项目对象模型(Project Object Module),该文件是可以被子工程继承
    maven多模块管理 其实就是让它的子模块的pom文件来继承父工程的pom文件
-->

<!--
    maven父工程必须遵循以下两点要求:
    1.packaging标签的文本内容必须设置为pom
    2.把src目录删除掉
-->

<!--父管理依赖的版本号-->
<properties>
    <!--自定义标签名称-->
    <!--
        通常管理依赖版本号的标签名称由 = 项目名称+字段version
    -->
    <junit-version>4.10</junit-version>
    <mysql-connector-java-version>8.0.19</mysql-connector-java-version>
    <dubbo.version>2.6.2</dubbo.version>
    <spring-webmvc-version>4.3.16.RELEASE</spring-webmvc-version>

</properties>


<!--父工程要加强管理子模块的所依赖-->
<dependencyManagement>

    <!--父工程添加的依赖,所子模块会无条件的云继承-->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit-version}</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector-java-version}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>${dubbo.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring-webmvc-version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <!--JDK1.8编译插件-->
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>
</project>

java子工程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">
<parent>
<!--指向父工程的GAV坐标-->
    <artifactId>001-maven-parent</artifactId>
    <groupId>com.bjpowernode.maven</groupId>
    <version>1.0.0</version>
    <relativePath>../001-maven-parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>006-maven-java</artifactId>

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.9</version><!--    就近原则,子工程版本号则用子工程自己的,没则与父工程一致-->
    </dependency>
</dependencies>

</project>

web子工程的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">
<!--指向父工程-->
<parent>
    <artifactId>001-maven-parent</artifactId>
    <groupId>com.bjpowernode.maven</groupId>
    <version>1.0.0</version>
    <relativePath>../001-maven-parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>003-maven-web</artifactId>

<packaging>war</packaging>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
</dependencies>
</project>

第二种方式

子工程在父工程下
比第一种方式多了

<!--父工程包含的所子模块-->
<modules>
    <module>maven-java-001</module>
    <module>maven-web-001</module>
</modules>

项目视图:
在这里插入图片描述

父工程的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.bjpowernode.maven</groupId>
<artifactId>maven-parent</artifactId>
<version>1.0.0</version>
<!--
    maven父工程必须遵循以下两点要求:
    1.packaging标签的文本内容必须设置为pom
    2.删除src目录
-->

<packaging>pom</packaging>

<!--父工程包含的所子模块-->
<modules>
    <module>maven-java-001</module>
    <module>maven-web-001</module>
</modules>

<!--父工程在properties标签里管理依赖的版本号-->
<properties>
    <!--
        自定义标签,构成=项目名称+"version"
    -->
    <mysql.version>8.0.19</mysql.version>
    <junit-version>4.10</junit-version>

</properties>

<!--父工程要管理所依赖-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit-version}</version>
        </dependency>
    </dependencies>

</dependencyManagement>


<build>
    <plugins>
        <!--JDK1.8编译插件-->
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>
</project>

java子工程的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">
<!--指向父工程-->
<parent>
    <artifactId>maven-parent</artifactId>
    <groupId>com.bjpowernode.maven</groupId>
    <version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>maven-java-001</artifactId>

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <!--<version>8.0.19</version>-->
        <!--如果version以当前项目指定的为准-->
    </dependency>
</dependencies>
</project>

web工程的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">
<!--指向父工程-->
<parent>
    <artifactId>maven-parent</artifactId>
    <groupId>com.bjpowernode.maven</groupId>
    <version>1.0.0</version>
</parent>

<modelVersion>4.0.0</modelVersion>

<artifactId>maven-web-001</artifactId>

<packaging>war</packaging>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
</dependencies>
</project>

第三种方式

第一种方式与第二种方式的结合
项目视图:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值