多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Spring Boot 多模块 Maven 项目示例 > 原文: [https://howtodoinjava.com/spring-boot2/sb-multi-module-maven-project/](https://howtodoinjava.com/spring-boot2/sb-multi-module-maven-project/) 学习**创建具有多个模块**的 spring boot 项目。 父项目将作为基础 [Maven](https://howtodoinjava.com/maven/) 配置的容器。 子模块将是实际的[SpringBoot](https://howtodoinjava.com/spring-boot-tutorials/)项目 – 继承父项目的 maven 属性。 ## 1\. Spring Boot Maven 父项目 父项目是单点触发所有模块的构建过程,并可选地生成可部署的程序包(例如,ear,war 等)。 它的`pom.xml`文件包含所有模块的列表以及子项目继承的常见依赖项和属性。 在创建 spring boot 项目时,我们将需要添加[`spring-boot-starter-parent`](https://howtodoinjava.com/spring-boot/spring-boot-starter-parent-dependency/)依赖项。 它是父 POM,它为基于 Spring Boot 的应用程序提供依赖关系和插件管理。 它包含要使用的 Java 的**默认版本**,Spring Boot 使用的默认依赖版本以及 Maven 插件的**默认配置**。 `Console` ```java $ mvn archetype:generate -DgroupId=com.howtodoinjava -DartifactId=HelloWorldApp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false ``` `pom.xml` ```java <?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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.howtodoinjava</groupId> <artifactId>HelloWorldApp</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <name>HelloWorldApp</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <modules> <module>HelloWorldApp-ear</module> <module>HelloWorldApp-service</module> <module>HelloWorldApp-rws</module> </modules> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> </project> ``` ## 2\. 子模块 – EAR,WAR,JAR 子模块可以是任何项目,也可以创建任何包装。 我们可以在模块之间创建任何种类的依赖关系,也可以将它们捆绑在一起。 这是非常具体的个人要求。 有时,我们将创建一个 ear 文件,一个 war 文件和一个 jar 文件。 Jar 文件捆绑到 war 文件中,war 文件捆绑到 ear 文件中。 EAR 文件是要部署到应用程序服务器上的最终软件包。 `Console` ```java $ cd HelloWorldApp $ mvn archetype:generate -DgroupId=com.howtodoinjava -DartifactId=HelloWorldApp-ear -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false $ mvn archetype:generate -DgroupId=com.howtodoinjava -DartifactId=HelloWorldApp-service -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false $ mvn archetype:generate -DgroupId=com.howtodoinjava -DartifactId=HelloWorldApp-rws -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false ``` 请根据需要添加第三方库和依赖关系。 #### 2.1. JAR 包 `pom.xml` ```java <?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.howtodoinjava</groupId> <artifactId>HelloWorldApp</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>HelloWorldApp-service</artifactId> <name>HelloWorldApp-service</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> </dependencies> </project> ``` #### 2.2. WAR 包 `pom.xml` ```java <?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.howtodoinjava</groupId> <artifactId>HelloWorldApp</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>HelloWorldApp-rws</artifactId> <packaging>war</packaging> <name>HelloWorldApp-rws Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Package jar in the war file --> <dependency> <groupId>com.howtodoinjava</groupId> <artifactId>HelloWorldApp-service</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> <build> <finalName>HelloWorldApp-rws</finalName> </build> </project> ``` #### 2.3. EAR 包 `pom.xml` ```java <?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.howtodoinjava</groupId> <artifactId>HelloWorldApp</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>HelloWorldApp-ear</artifactId> <name>HelloWorldApp-ear</name> <url>http://maven.apache.org</url> <packaging>ear</packaging> <dependencies> <!-- Package war in the ear file --> <dependency> <groupId>com.howtodoinjava</groupId> <artifactId>HelloWorldApp-rws</artifactId> <version>1.0-SNAPSHOT</version> <type>war</type> </dependency> </dependencies> <!-- Plugin to bundle the ear file--> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ear-plugin</artifactId> <version>3.0.1</version> <configuration> <finalName>HelloWorldApp-${project.version}</finalName> <modules> <webModule> <groupId>com.howtodoinjava</groupId> <artifactId>HelloWorldApp-rws</artifactId> <uri>HelloWorldApp-rws-1.0-SNAPSHOT.war</uri> <!-- Set custom context root --> <contextRoot>/application</contextRoot> </webModule> </modules> </configuration> </plugin> </plugins> </pluginManagement> </build> </project> ``` ## 3\. Maven 构建 要用单个命令编译和构建所有项目,请转到父项目并运行`mvn clean install`命令。 此命令将为我们生成一个名称为`HelloWorldApp-1.0-SNAPSHOT.ear`的 EAR 文件。 `Console` ```java E:\HelloWorldApp>mvn clean install ... ... ... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] HelloWorldApp 1.0-SNAPSHOT ......................... SUCCESS [ 0.428 s] [INFO] HelloWorldApp-service .............................. SUCCESS [ 1.000 s] [INFO] HelloWorldApp-rws Maven Webapp ..................... SUCCESS [ 1.322 s] [INFO] HelloWorldApp-ear 1.0-SNAPSHOT ..................... SUCCESS [ 0.813 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.063 s [INFO] Finished at: 2018-11-19T09:28:31+05:30 [INFO] ------------------------------------------------------------------------ ``` 学习愉快! 阅读更多: [使用控制台](https://howtodoinjava.com/maven/multi-module-project-console/) [使用 Eclipse](https://howtodoinjava.com/maven/multi-module-project-eclipse/) 的多模块 maven 项目