如何建立有多个子模块的Maven项目

本文以Spring Cloud为例,介绍如何创建有多个子模块的Maven项目。

创建父项目

使用Spring Initializr创建父项目:

创建 Spring Cloud 项目

创建 Spring Cloud 项目

创建 Spring Cloud 项目

修改pom.xml文件,修改packaging方式为pom

<groupId>com.jactor.learning.springcloud</groupId>
<artifactId>demo-oauth2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

创建模块

使用Spring Initializr创建子项目(模块),过程和创建父项目一样,需要注意的是,子项目需要在父项目的目录下。

修改pom.xml文件,将parent修改为父项目:

<groupId>com.jactor.learning.springcloud</groupId>
<artifactId>eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

将与父项目配置重复的地方删除,这里指dependencyManagementbuildrepositories标签。当然,如果子项目需要配置自己个性化的不通用的配置项的话就可以保留一些标签。

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

在父项目中添加子项目模块:

<modules>
<module>eureka-server</module>
</modules>

这样就建立了模块和父项目之间的关系。

项目构建

项目构建既可以整个项目一起构建,也可以单独构建子项目。

构建整个项目

在父目录下构建项目

mvn clean install package

这时会把所有关联的模块都构建了。

构建子项目

在模块目录下构建项目

mvn clean install package

这时只会构建子项目。