什么是企业级开发项目结构?带你用maven构建多模块的java项目

当我们从spring官网下载quickstart的例子时,它其实是一个单模块的maven项目,可以用来学习,但是真正用于企业级生产应用,我们还得稍微改造成多模块结构。最常见的例子是你如果从网上找一些开源项目,导入maven工程之后,你会发现这项目结构都是按照模块很清晰的分层:接口模块、数据库模块、业务模块等等,如果有十几甚至几十个模块的话,如果整个项目编译是否需要一个一个的去构建,能否通过一个配置文件帮你进行所有的编译操作?这就是今天要分享的内容:构建一个企业生产的开发项目基础框架。

你需要一个父模块

maven在于统一所有的项目结构,实行约定大于配置,所以不用在乎开发工具,我这里用的最新版的eclipse,如果用别的工具,原理一致。

(1)首先,通过eclipse新建maven项目,工程名叫test-parent,作为父项目,用于管理所有子项目。

(2)然后一路next,然后需要填写groupid(一般是组织名),artifactid(项目名),这里根据项目实际情况填写即可。

(3)点击结束之后,会生成一个以下这样的结构。我们需要进行以下简单的改造,直接删除src目录;默认编译jre为1.5,自行更改jdk版本,我这里安装了最新的jdk,所以改为jdk12。最后在pom文件中更改项目的打包方式为pom。

最后整体父模块构建效果如下图,

在父模块下建子模块

(1)增加第一个模块,起名为test_service,该模块实现业务功能。

(2)增加第二个模块,起名为test-web,该模块是个web应用,用于在web端展示结果。

(3) 增加第三个模块,起名test_db,该模块负责数据库部分

正常情况下,eclipse会自动在父模块的pom文件中增加 3个项目为子项目,然后修改各个项目的jdk版本为jdk12。

<modules>

<module>test_service</module>

<module>test-web</module>

<module>test_db</module>

</modules>

到此为止,项目基本框架完成,

现在已经可以通过parent模块的pom文件统一构建所有的子模块项目,你只需在pom,右键点运行

最终如图:

你的父项目就包含了所有的子项目。构建就完成了。

如何管理jar包依赖

我们拿springboot做例子,这个统一在parent模块中维护springboot的版本及依赖,其它模块进行依赖共享。在pom文件中加入相关依赖,在属性中定义一个springboot版本号,这样在所有子模块中就可以共享一个版本号,以后升级非常方便。

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.1.9.RELEASE</version>

<relativePath />

</parent>

<properties>

<springboot.version>2.1.9.RELEASE</springboot.version>

</properties>

子模块自动继承父模块的jar包,成为springboot项目。为更好管理jar的版本号,在父项目的pom文件中做些修改,统一在properties中定义版本号,增加dependencyManagement节点。这样在子模块中只需引入依赖包,不再需要指定版本号,达到一点修改的目的。看例子:

<dependencyManagement>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-rest</artifactId>

<version>${springboot.version}</version>

</dependency>

</dependencyManagement>

我们定义了一个rest的jar包,假设我们只在模块test_web中使用,那么在test_web模块下的pom文件中引入

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-rest</artifactId>

<version>${springboot.version}</version>

</dependency>

总结

以上就初步构建了一个企业生产中的一个最基本的架构,可以通过父模块管理所有的子模块,一站式构建。

相关文章

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
今天犯了个错:“接口变动,伤筋动骨,除非你确定只有你一个...
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:...
本文目录 线程与多线程 线程的运行与创建 线程的状态 1 线程...