原文参见: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我的项目