原文参见:Spring Boot入门(四) - 多模块(module)maven我的项目

本文将介绍具备多个模块(module)的spring boot我的项目。父模块用于根本Maven配置容器,子模块是理论的Spring Boot我的项目,同时从父模块继承Maven属性。

1. Spring Boot Maven父模块

父模块是触发所有模块构建过程的入口模块,可配置来生成部署包(如ear、war等),父模块的pom.xml文件蕴含所有子模块的列表,及子模块继承的公共依赖项和属性。

创立spring boot我的项目的时候,须要增加spring-boot-starter-parent依赖项,为基于Spring Boot的应用程序提供依赖关系和插件治理,蕴含了Java的默认版本、Spring Boot依赖项的默认版本、Maven插件的默认配置。

console命令行:

$ mvn archetype:generate -DgroupId=com.howtodoinjava                        -DartifactId=HelloWorldApp                        -DarchetypeArtifactId=maven-archetype-quickstart                        -DinteractiveMode=false

pom.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/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命令行:

$ 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

<?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

<?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包

<?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命令行:

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] ------------------------------------------------------------------------

Happy coding!

更多

应用console控制台运行多module maven我的项目
应用eclipse运行多module maven我的项目