Skip to content

多模块配置

例子详细请参考 链接

多模块演示项目结构如下:

bash
.
├── module1
│   ├── pom.xml
│   └── src
│       ├── main
│       │   ├── java
│       │   │   └── com
│       │   │       └── future
│       │   │           └── demo
│       │   │               └── module1
│       │   │                   └── Module1Util.java
│       │   └── resources
│       └── test
│           ├── java
│           └── resources
├── module2
│   ├── pom.xml
│   └── src
│       ├── main
│       │   ├── java
│       │   │   └── com
│       │   │       └── future
│       │   │           └── demo
│       │   │               └── module2
│       │   │                   └── Module2Util.java
│       │   └── resources
│       └── test
│           ├── java
│           └── resources
└── parent
    └── pom.xml

parent目录是多模块项目的父项目,module1module2分别是子模块。IntelliJ IDEA可以通过导入parent模块来达到整个项目一次导入的目的。

parent/pom.xml内容如下:

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.future.demo</groupId>
    <artifactId>demo-parent</artifactId>
    <!-- 定义父模块类型为pom -->
    <packaging>pom</packaging>
    <version>1.0.0</version>

    <properties>
        <!-- 指定maven-compiler-plugin插件使用的jdk版本 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <modules>
        <!-- 使用相对路径指向子模块 -->
        <module>../module1</module>
        <module>../module2</module>
    </modules>

</project>

module1/pom.xml内容如下:

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>

    <parent>
        <groupId>com.future.demo</groupId>
        <artifactId>demo-parent</artifactId>
        <version>1.0.0</version>
        <!-- 指定parent项目的相对路径,否则编译时报错 -->
        <relativePath>../parent</relativePath>
    </parent>


    <artifactId>module1</artifactId>
    <!-- 指定构件被构建的类型为jar -->
    <packaging>jar</packaging>

</project>

module2/pom.xml内容如下:

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>

    <parent>
        <groupId>com.future.demo</groupId>
        <artifactId>demo-parent</artifactId>
        <version>1.0.0</version>
        <!-- 指定parent项目的相对路径,否则编译时报错 -->
        <relativePath>../parent</relativePath>
    </parent>


    <artifactId>module2</artifactId>
    <!-- 指定构件被构建的类型为jar -->
    <packaging>jar</packaging>

</project>

通过以上的pom.xml配置即可以建立基于maven的多模块应用。

进入parent目录,编译整个项目

bash
mvn package