1.父子-聚合项目

通过 maven 可以创建父子-聚合项目。 所谓的父子项目,即有一个父项目,有多个子项目。
这些子项目,在业务逻辑上,都归纳在这个父项目下,并且一般来说,都会有重复的jar包共享。
所以常用的做法会把重复的 jar 包都放在父项目下进行依赖,那么子项目就无需再去依赖这些重复的 jar 包了。

2.新建项目

java父子分级 java父子项目_xml

3.选择maven项目

  1. 左边选择Maven
  2. 勾选Create from archetype
  3. 选择org.apache.maven.archetypes:maven-archetype-quickstart
  4. Next

java父子分级 java父子项目_intellij idea_02

4.项目参数

输入如图所示项目参数

java父子分级 java父子项目_xml_03

5.maven设置

java父子分级 java父子项目_xml_04

6.项目位置

如图所示,然后点 Finish

java父子分级 java父子项目_jar_05

7.修改pom.xml

idea 自动生成的 pom.xml 有一大堆东西,很多都用不着。 修改为如下的内容。

1.默认是 jar, 修改为pom。 这样才可以作为父项目存在。

<packaging>pom</packaging>

2.增加 hutool jar 和 junit 包的依赖,用于后来子项目里观察对其的调用。

<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>cn.how2j</groupId>
  <artifactId>parentMavenProject</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>parentMavenProject</name>
  <description>parentMavenProject</description>
  <packaging>pom</packaging>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>4.3.1</version>
    </dependency>
  </dependencies>
</project>

8.创建子项目

所谓的子项目,其实是maven module.

右键点击 parentMavenProject->New->Module.

java父子分级 java父子项目_intellij idea_06

9.选择简单项目

  1. 左边选择Maven
  2. 勾选Create from archetype
  3. 选择org.apache.maven.archetypes:maven-archetype-quickstart
  4. Next

java父子分级 java父子项目_java父子分级_07

10.项目参数

输入ArtifactId: childMavenProject

java父子分级 java父子项目_java父子分级_08

11.maven设置

java父子分级 java父子项目_xml_09

12.项目目录

如图所示,然后点击 Finish。

java父子分级 java父子项目_java父子分级_10

13.TestHutool

在 childMavenProject 下新建 TestHutool类,并运行。
可以发现,是可以使用 hutool jar 里的类的。 这说明子项目,能够使用 父项目中的 jar 包了。

java父子分级 java父子项目_xml_11

package childMavenProject;
 
import java.util.Date;
 
import cn.hutool.core.date.DateUtil;
  
public class TestHutool {
  
    public static void main(String[] args) {
        String dateStr = "2012-12-12 12:12:12";
        Date date = DateUtil.parse(dateStr);
        System.out.println(date);
    }
}

14.子项目的pom.xml

观察子项目的 pom.xml ,可以发现它多了个 parent, 这个就是对父项目的依赖。

<parent>
        <artifactId>parentMavenProject</artifactId>
        <groupId>cn.how2j</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

java父子分级 java父子项目_intellij idea_12

15.父项目的pom.xml

此时再打开父项目的 pom.xml ,可以发现它多了这么一个模块s, 就表示对子项目的关联。

<modules>
    <module>childMavenProject</module>
  </modules>

java父子分级 java父子项目_xml_13

16. 项目结构

观察目录结构,可以发现 childMavenProject 是位于 parentMavenProject下面的。 所以如果将来有 childMavenProject1, childMavenProject2, childMavenProject3 也会放在这么一个目录下,就方便管理了。

java父子分级 java父子项目_intellij idea_14