maven构建多模块项目总结
作为开发人员,当开发项目大了之后,往往都会采取多模块构建的方式进行区分。但是使用多模块进行构建也往往会出现一些打包问题。笔者在解决这类问题时,也走了不少弯路。希望这篇文章能够帮读者少走一些弯路。
0. 概述
maven多模块项目构建的本质就是通过parent和module标签。通过在父工程里指明module、在子工程里指明parent,即可实现父子工程的构建。
明白该原理,就可以通过手动的方式自己自定义maven项目的聚合。但是一般还是会采用IDE所自带的自动创建父子工程的功能以及一些默认的规范。当然,规范不用强制遵守。但是,因为这些规范都是基于经验总结出来的,所以,使用这些规范能够在很大程度避免问题的出现。
这也是作为一个踩过坑的人的血泪经验。
本篇文章主要说明的是将maven与SpringBoot结合,实现多模块项目构建的发布和部署。而关于项目本身,读者可以基于对本文的理解,对自己的项目进行同样配置,然后进行发布和部署,也可以使用我的一个demo工程。
环境:idea 2018.3.3 + MySQL 5.7 + Centos7 + SpringBoot 2.X + JDK1.8
1. 多模块构建项目的要求
使用maven进行多模块构建项目,还是要遵循一些简单的原则:
- 父工程必须要指明打包方式为pom,其他子工程可以使用其他任意方式
- 一般将一些通用子工程打成jar包,要部署的实际项目打成war包。当然,对于使用SpringBoot插件而言,全部打成jar包就可以了
- 对于父工程以及其他不会发布的工程,不需要添加SpringBoot的maven插件。
- 父工程只用作依赖管理
- 如果父工程已经在pom文件的
dependencyManagment
中引入SpringCloud依赖,那么子工程就不需要再添加此依赖。 - 如果某个子工程被另一个子工程依赖,那么这个子工程不能完成maven的package及后面的操作。一般进行compile即可。
只要严格遵循了这些原则,那么利用SpringBoot和maven进行项目的打包和部署是十分简单并且没有任何问题的。
2. 部署要求
2.1. 安装jdk1.8
Linux下的jdk安装十分简单
- 首先,从官网上下载jdk1.8的Linux打包文件
- 将其放置在/usr/local(一般都安装在这个目录下),解压
- 使用vim编辑/etc/profile文件,在文件末尾添加以下内容,并使用source /etc/profile激活该配置。
# java环境配置
export JAVA_HOME=/usr/local/jdk1.8.0_211
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/bin
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
- 使用
javac
和java -version
命令检查是否jdk是否安装成功
2.2. 运行jar包
当使用idea打包多模块项目时,直接在父工程中执行package时就会自动打包所有子工程。找到要运行的项目的target目录,打包成功后会在该目录下生成一个jar包。
将该jar包放到服务器上的任意位置,使用java -jar xxx.jar
命令即可成功运行SpringBoot项目。
2.3. 访问
如果是使用虚拟机作为服务器,那么关闭服务器的防火墙和selinux后。如果宿主机能够ping通虚拟机,那么就可以在浏览器中访问部署的项目。
如果是使用的云服务器,那么同样也需要先关掉防火墙和selinux,然后在控制台的控制链中,开放要使用的端口即可成功访问。