SpringBoot多模块构建、打包(jar、war)
今天自己学习了一手springboot的多模块构建,下面就简单的记录一下首先就是项目右键新建一个Module选择Maven然后自己定义artifactId,最后finish完成上面你就可以看到你的项目下新增了一个模块,如下图项目根目录的pom下也会出现相应的modules具体要创建多少的模块就根据实际项目的需求来进行创建,创建完毕之后就可以把之前src路径下的文件copy过去...
springboot的多模块构建
今天自己学习了一手springboot多模块构建,下面就简单的记录一下
方式一
首先就是项目右键新建一个Module
选择Maven
然后自己定义artifactId,最后finish
完成上面你就可以看到你的项目下新增了一个模块,如下图
项目根目录的pom下也会出现相应的modules
具体要创建多少的模块就根据实际项目的需求来进行创建,创建完毕之后就可以把之前src路径下的文件copy过去,注意需要把你之前创建的package也一并copy创建,在此过程中IDEA可能会出现警告,是因为依赖关系的原因,出现这个问题就先continue,没关系,后面会进行解决
完成上面一部之后,还需要在每个对应模块的pom引入对应的依赖,具体根据你copy的类来进行引入,引入完毕之后,开始构建依赖,比如我这的server要依赖于common,那我就可以在server下的pom建立和common的依赖,在pom文件中:
<dependency>
<groupId>com.imooc</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
这样就可以跟common模块构建了关联,可以引入common中定义的一些类
至此就已经完成了项目中的多模块构建,接下来就是项目打包
通常下我们有两种打包方式 jar 或者 war
首先我们进行jar的打包构建
这时候如果我们之后运行maven进行打包会报错,报什么错呢
找不到入口文件,当然因为我们要把启动类放到我们自己构建的某个模块下,我这里就放到了server下,那既然找不到入口文件,我们就在加上入口文件呗
<configuration>
<mainClass>com.imooc.product.ProductApplication</mainClass>
</configuration>
加入了之后我们进入打包,发现又报了别的错误
这是他说去尝试下载了我们的这个包,但其实这是不对的,当然这其实也是一个错误的打包示范
<dependencies>
<dependency>
<groupId>com.imooc</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
我把完整的代码片段也粘贴一下
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.imooc.product.ProductApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
继续打包还是会报错,其实是我们不应该在项目根路径下的pom中进行配置,我们的启动类都已经被移动了,那就应该到这个启动类所在的模块下的pom中进行配置
所以,我们把刚刚配置的代码cut到server(以我的为例)下的pom中
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.imooc.product.ProductApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
至此,我们再进行打包
打包成功!可以cd 到目录在 java -jar xxx.jar 运行测试
接下来就打包war,war包我们需要在pom中加入
<packaging>war</packaging>
因为默认是打成jar包的,所以我们需要加入这一的一句,另外因为是war包,我们需要在创建web.xml配置文件
再进行打包构建
打包成功,也可以cd到项目目录下进行运行测试
大功告成~
有什么问题请批评指正~
方式二
------2019.11.30
补充
server模块:所有业务逻辑
client模块:对外暴露的接口
common模块:公用对象
server,client依赖于common
再主模块的pom中添加packaging和modules
<packaging>pom</packaging>
<modules>
<module>client</module>
<module>common</module>
<module>server</module>
</modules>
刚写完肯定是抛红,因为她不存在,这个时候就可以创建啦,他会为我们自动创建:
创建完之后是这样的:
红色框处的部分可以删去,因为在parent中已经存在了,并且没有的话也是会按照parent中保持一致的
这时候把主模块中的src全部移动到server下,把主项目下的pom文件依赖也全部copy到server下的pom中去,还有build部分也要copy过去
因为分模块开发中这样的名称可能会同名,为了方便区分,在子模块的pom下更改标签的名称,如下,具体按照自己实际开发定义
<artifactId>order-client</artifactId>
比如在server、client中都需要调用common的类,那么就需要导入common的依赖,并且还需要导入指定的版本,为了后续方便维护,在主模块的pom文件中,在**标签汇总配置版本,在**标签中加入common的依赖,如:
<properties>
<order-common.version>0.0.1-SNAPSHOT</order-common.version>
</properties>
<dependencyManagement>
<dependency>
<groupId>com.cloud</groupId>
<artifactId>order-common</artifactId>
<version>${order-common.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
这样配置之后在子模块中调用就可以不再指定版本去调用了,因为在主模块中已经全局配置好了,这样也是方便日后项目的维护。
在common、client两个模块中要创建类之前需要先给他们创建好路径,只能一级一级创建:
src -> main -> java(Sources root) -> com.xxx.xxx.common(client)
(Sources root) 就是设置为java程序块,在java文件夹上右键Mark Directory as --> Sources root
最主要的就是刷新pom文件
最主要的就是刷新pom文件
最主要的就是刷新pom文件
这些工作都做完之后需要修改springboot的启动类,你的启动类在哪个子模块下就选择那个,我这边就是order-server。
命令:mvn -Dmaven.test.skip=true -U clean install
就是把这些包打在本地Maven仓库,这样在开发阶段就可以引入了
更多推荐
所有评论(0)