IDEA创建Maven子项目


IDEA创建普通Maven项目,设置坐标(GAV:groupId、artifactId、version)

parent_test

以parent_test当作父项目为例

pom.xml

parent_test的坐标信息

<groupId>com.dfbz.test</groupId>
    <artifactId>parent_test</artifactId>
    <version>1.0-SNAPSHOT</version>

在坐标信息下方添加packaging(打包方式)为pom

<packaging>pom</packaging>

打包方式和项目类型有关
java项目的打包方式为jar
web项目的打包方式为war

若准备创建子项目则不论创建什么类型的Maven项目
父项目打包方式都设置为pom

将child_test命名为子项目
添加modules标签
在modules标签中添加module标签
在module标签中填写子项目的名称
若有多个子项目则添加多个module标签在一个modules标签中即可

child_test

IDEA创建与父项目类型相同的Maven项目
以child_test为命名作为parent_test的子项目

pom.xml

在child_test中的pom.xml中
将原先的坐标信息仅保留artifactId标签
在artifactId标签下方创建parent标签
并将父项目的坐标信息复制到parent标签中

<artifactId>child_test</artifactId>
    <parent>
        <groupId>com.dfbz.test</groupId>
        <artifactId>parent_test</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

再将父项目的pom.xml的相对路径写到relativePath标签中
将relativePath标签添加到parent标签中

<relativePath>../parent_test/pom.xml</relativePath>

这里的相对路径与父项目和子项目的路径有关

若父项目与子项目的目录同级
则路径应写为../父项目名称/pom.xml

若子项目创建在父项目目录中
则路径应写为../pom.xml

其他目录放置情况,以此类推不再赘述

IDEA父项目中显示子项目

IDEA打开parent_test

点击File→Project Structure…

idea给maven项目添加子模块_idea给maven项目添加子模块


点击Modules点击右侧+号添加子项目

idea给maven项目添加子模块_ci_02


选择Import Module

idea给maven项目添加子模块_xml_03


找到子项目位置,选中子项目最外层目录点击OK

在Import Module弹窗中选择Import module from external model→Maven

点击Finish

idea给maven项目添加子模块_idea给maven项目添加子模块_04


Modules列表中出现所添加的子项目后点击OK

现在,父项目和子项目就同时显示在IDEA中了,且均可编译运行

依赖的继承

以继承junit为例

parent_test

在parent_test的pom.xml添加dependencies标签
并在dependencies标签中添加junit依赖
设置junit的scopecompile(范围是编译)
注:若这里的参数写为非compile(如test)则junit依赖无法传递给子项目,

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

刷新Maven

External Libraries外部资源库中出现junit相关jar包

idea给maven项目添加子模块_idea给maven项目添加子模块_05


在父项目中创建测试java类,创建测试方法(@Test注解的方法)

测试方法可以正常运行

child_test

通过继承父项目的junit依赖,子项目不需要再写junit依赖就可以直接使用junit相关功能

直接在子项目中创建java测试类,创建创建测试方法(@Test注解的方法)
测试方法可以正常运行