没做过大项目,但我会建大项目

刚出来实习的时候,参与的项目使用的还是SSH框架。

那时候还在使用SVN进行版本管理,常常在合并代码的时候遇到各种莫名其妙的问题。

那时候使用着曾经宇宙最好用的JAVA IDE Eclipse写代码,也没有觉得界面简陋影响编码。

那时候还不知道啥时微服务,只知道有需求了就把代码往单体项目的代码里加,而且是前端和后台代码放一起的那种。什么Vue、React、Angular,不存在的,JQuery搞定一切。

因为项目小,或者因为业务并不复杂,虽然项目代码都放一块,但是勉强还可以看,找相关的代码也算比较快。

后来,慢慢接触到了一些大点的项目,而且微服务的设计理念也更加盛行和深入人心。所以,我们会发现在当今宇宙最好的JAVA IDE Intellij IDEA中多了越来越多的微服务项目,日益膨胀的业务,让我们在找相应的项目以及代码的时候力不从心。

所以,这时候项目的编排就很重要,换句话说就是,大项目应该有大项目的样子。这篇就来看看我们如果在Intellij IDEA中搭建项目目录结构清新的大项目。

项目结构对比

项目划分前

这时候如果要添加代码,我们会在项目里面通过创建各个package用于区分业务代码,或者新建平级的module。

项目划分后

如何创建有层次的大项目框架

1、创建root项目

点击File->new->Project,点击图中的左侧的maven,创建一个maven父级项目

点击next,进入下一步

2、填写maven坐标项目

因为创建的是maven项目,所以需要定义groupId和artifactId,自己填写即可

点击next,进入下一步

3、确认项目信息并完成父级项目创建

4、父级项目概览

这就是一个再普通不过的maven项目,下面我们需要在这个项目中新建子module。

5、创建聚合项目

我们在微服务开发模式下经常需要开发一个接口服务,同时可能还需要一个用于同步数据的服务,如果我们把这两个服务散落在root项目目录下,有时候因为命名而隔得很远,找代码也不方便。

这时候就需要一个聚合项目,该项目用于编排某个服务项目的原子项目(xxx),如服务的实现项目("xxx-service"),服务的接口项目("xxx-api"),服务的同步数据项目("xxx-sync")。

这里我们就创建一个聚合项目spring

5.1 创建“spring”项目

在root项目上右键选择new->module

5.2 创建一个maven的“spring”项目

点击next,进入下一步

5.3 填写maven的坐标信息

注意这里因为是在root下新建子module,所以这里有个“Parent”选项,即继承了root项目,填写下artifactId即可。

点击next,进入下一步

5.4 确认项目信息并完成聚合项目创建
5.5 聚合项目概览

注意这里聚合项目“spring”已经创建成功,点击root项目的pom文件,可以看到已经多了属性标签,如右图所示。

6、创建聚合项目下的子项目

有了聚合项目,我们就可以在“spring”下创建子项目了,具体步骤如下

6.1 创建聚合项目下的子项目

在“spring”项目上右键new->module,这时候我们选择创建一个springboot的项目

点击next,进入下一步

6.2 填写项目基本信息

填写好springboot项目的maven坐标信息

点击next,进入下一步,一直到确认信息页面

6.3确认项目信息

注意这里默认content root和module file location只到/Users/jackie/workspace/root/spring,但是我们要创建的是springboot项目,位于聚合项目下的子项目。所以需要将两个变量的信息改为如图所示,即加上新建项目的名称信息。

我在这里尝试过几次,都没有加上子项目的名称,导致新建的项目一直和聚合项目平级,无法起到聚合的目的,所以这里需要格外注意。

6.4 聚合项目下的子项目概览

这里“spring”作为聚合项目,可以将该目录下的src目录删除,仅保留pom文件用于编排子项目。

至此,我们完成了基本父级项目的创建,聚合项目的创建以及聚合项目下子项目的创建。

看完这边,相信再复杂的目录结构层次也难不倒你了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏iOS开发随笔

Git 学习笔记

11470
来自专栏DeveWork

WordPress主题开发:添加主题更新提醒功能

WordPress官方的主题都可以自动更新升级,但如果是个人分享的免费或收费主题的话,通过下面的教程,也可以为你的私人主题添加版本更新提示。这个提示会直接显示在...

23080
来自专栏破晓之歌

Redis入门(暂不更新) 原

50个并发程序执行10万个请求,redis读的速度能达到每秒11万次,写的速度能达到每秒8万次。-官方数据

8120
来自专栏DeveWork

WordPress主题开发:添加主题更新提醒功能

WordPress官方的主题都可以自动更新升级,但如果是个人分享的免费或收费主题的话,通过下面的教程,也可以为你的私人主题添加版本更新提示。这个提示会直接显示在...

25760
来自专栏zaking's

走近webpack(0)--正文之前的故事

  在前端工作的过程中,只要你接触过vue,angular,react,gulp就一定知道webpack或者听说过或者使用过webpack,但是或许你对webp...

29540
来自专栏魏艾斯博客www.vpsss.net

PhpStudy 安装 Ftp Server 的方法

23320
来自专栏向治洪

打包自己的aar库

在比较大的 Android 项目的开发中,我们经常会遇到工程、jar 包等等之间相互引用的方式。一般我们通过在 gradle 文件中配置依赖来解决,但是如果通过...

35490
来自专栏吴裕超

大型vue单页面项目优化总结

这是之前在公司oa项目优化时罗列的优化点,基本都已经完成,当时花了点心思整理的,保存在这里,方便以后其他项目用到查漏补缺。 1、打包文件中的app.js文件放入...

1K40
来自专栏开源优测

AutoLine源码分析之调度管理器

AutoLine采用了Apscheduler库来实现AutoLine的测试用例的执行任务的调度管理

11710
来自专栏ascii0x03的安全笔记

HTML5离线缓存攻击测试(二)

经过昨天的测试,发现使用离线缓存的网站会被攻击。但是,不使用离线缓存的网站就真的不会受到这样的攻击么? 据我理解,按照标准当浏览器请求manifest文件时,若...

38460

扫码关注云+社区

领取腾讯云代金券