springboot创建多模块modules应用demo

为什么要使用多模块开发

        在平时的开发中,为了便于后期的维护,我们一般采用多模块开发。最常用的分层就是:domain、dao、service、web层。分层之后,各层级模块的职责功能明确,后期维护的时候会轻松许多。

多模块开发的核心:pom

        pom: Project Object Model 项目对象模型.pom文件都是对应一个项目。

        而我们这里要说的多模块,也是根据pom文件进行的关联。

<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.demo</groupId>
  <artifactId>demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build/>
</project>

一个基本的pom文件主要参数有:

project: pom.xml的顶级元素

modelVersion: 表示pom使用哪个版本的对象模型

groupId: 创建这个项目的团队或组织标识

artifactId: 项目的名称

version: 版本

packaging: 打包类型,如果是父项目,应为pom,子项目可为jar,war等

多模块项目的创建示例

(1)使用myeclipse新建一个maven项目


这个项目userParent是作为父项目,所以设置packaging为pom.

创建成功后显示为:


删除src文件夹

(2)创建子项目

在父项目上右键:New -> Maven Module


选择packaging为默认的jar,父项目已默认选定



照此步骤,创建userDao,userService,userWeb项目

得到项目结构是:


(3)子模块之间依赖关系绑定

在实际项目中,各个子模块之间不是完全独立的,可能会有一些依赖关系。比如userWeb会依赖userService,userDao,userDomain.而userDao依赖userDomain。那这些依赖关系,我们需要在pom文件中进行配置,让程序知道它们的绑定关系。

比如在userWeb的pom文件中的绑定关系:

		<dependency>
			<groupId>com.xl</groupId>
			<artifactId>userService</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>com.xl</groupId>
			<artifactId>userDao</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>com.xl</groupId>
			<artifactId>userDomain</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
与此类似,将userService和userDao之间的绑定关系在pom文件中建立起来

(4)启动测试

启动userWeb中的App类,浏览器测试。


多模块项目的打包示例

打包测试的时候,遇到了很多问题。

在父项目的pom中需配置

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<skipTests>true</skipTests>    <!--默认关掉单元测试 -->
				</configuration>
			</plugin>
		</plugins>
	</build>

在userWeb的pom中配置

	<build>
		<plugins>
			<plugin>
				<!-- The plugin rewrites your manifest -->
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration><!-- 指定该Main Class为全局的唯一入口 -->
					<mainClass>org.userWeb.App</mainClass>
					<layout>ZIP</layout>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中 -->
						</goals>
						<!--可以生成不含依赖包的不可执行Jar包 -->
						<!-- configuration> <classifier>exec</classifier> </configuration> -->
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

如果这里不配置,在启动时候会报错:

PS F:\workspace\userParent\userWeb\target> java -jar .\userWeb-0.0.1-SNAPSHOT.jar
.\userWeb-0.0.1-SNAPSHOT.jar中没有主清单属性

配置好了之后,在userParent目录下,执行mvn install package

在userParent的userWeb/target/下执行 java -jar .\userWeb-0.0.1-SNAPSHOT.jar

那整个平台就运行起来了。

源码地址:https://github.com/shirehappy/multiModules

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值