Maven构建真正的J2EE项目

JavaEE 项目脚手架:基于 Maven 的构建与自动化实践 在现代软件开发中,快速搭建项目框架是提高开发效率和降低项目复杂度的关键。JavaEE项目脚手架作为一个自动化工具,它能够在短时间内生成标准的项目结构、配置文件以及一些基础代码,从而减少手动配置和初始化项目所需的时间和努力。JavaEE项目脚手架是一种通过预设模板快速搭建项目基础结构的工具。它不仅减少了重复的手工劳动,而且通过提供统一的项目模板,帮助开发团队保持项目结构的一致性和可维护性。脚手架通常包含基础的代码框架、配置文件以及构建脚本等。 阅读详情

今天同事问起我目前用Maven构建的多模块项目架构和以前用Eclipse创建的Web项目的问题,下面将讲一下使用maven搭建多模块的J2ee项目,以及采用这种方式搭建项目对日后项目的水平拆分和垂直拆分的好处,最后会给一个示例项目供大家下载。

1,安装Maven

Maven安装很简单。

首先下载Maven,下载地址:http://maven.apache.org/download.cgi

然后解压后安装包。

最后配置环境变量。首先前提条件是装了Java环境。

 

二,Maven构建J2ee项目

单web项目

 

mvn archetype:create -DgroupId=com.company.test -DartifactId=my-test -DarchetypeArtifactId=maven-archetype-webapp

执行上面命令创建一个web项目,项目名称为my-test。很多人就这样开始使用了。

 

通常我们做web项目,都采用经典的MVC模式,按照上面创建的工程,MVC模式如何体现呢?最常用的方式就是通过package来分开层与层之间的关系。比如:com.company.test.web,com.company.test.service,com.company.test.dao。

整体结构如下:

上面的做法其实没有什么不好,在小型系统中该结构是很合理的,特别是代码规划的很好,结构很清晰的同学,整理的项目结构看起来还是很清晰的。采用标准的mvc模式。其实MVC 是说明前端,业务逻辑还有数据层的分离。然而业务逻辑是一个系统中最复杂的地方,并不是一个service 就能搞定。例如:要考虑系统不断壮大,业务逻辑越来越复杂,访问量越来越大,某些业务并发越来越高,这样项目就要拆分,不但要垂直拆分还要水平拆分。下面介绍下,比较好的做法。

 

构建多层次项目

例如一个视频网站,其业务可能包含用户管理,终端管理,点播管理,直播管理,广告投放,点播搜索,点播展示等等。由于开始整个网站比较小,访问量也比较低。所以开始搭建站点的时候没有必要搞的那么复杂,例如:读写分离,缓存,集群,分布式,数据库分片等。第一是前期没有必要那么去做;第二也没必要花那么大的成本;第三前期人员紧张搞大了不利于快速的响应需求。一切从实际出发,下面主要讨论如何合理的通过Maven构建项目。

业务划分

针对业务划分的话,这个视频网站可以划分为:用户,终端,资源(点播或直播),广告。他们相互之间会有交叉,比如,用户涉及到终端,广告涉及到资源等等的关系。

所以项目中最好把他们分成独立的子系统。例如分片叫做:test-user;test-terminal;test-res;test-ad。

构建多层次项目

Maven可以针对项目,构建结构复杂的多个子项目(这个其实在很多开源框架都就能看到)。由于上面业务已经划分好,创建步骤如下:

创建主工程:

 

D:\>mvn archetype:create -DgroupId=com.company.test -DartifactId=test-video

执行完成后,会在D盘根目录生成一个test-video的目录,打开test-video目录,删除里面的src目录,在编辑pom.xml文件,把

 

 

<packaging>jar</packaging>
改为
<packaging>pom</packaging>

接着进入test-video目录,继续创建其他子项目:

 

D:\>cd test-video
D:\test-video>mvn archetype:generate -DarchetypeCatalog=internal
//不加参数-DarchetypeCatalog=internal会导致运行mvn archetype:generate很慢

 

 

 

 
 
 
 

执行了上面的命令后,test-video文件夹会生成:test-core;test-ad;test-dao;test-res;test-terminal;test-user;test-web文件夹,并且在test-video目录下的pom.xml文件会增加如下内容:

 

  <modules>
    <module>test-core</module>
    <module>test-user</module>
    <module>test-res</module>
    <module>test-terminal</module>
    <module>test-ad</module>
    <module>test-dao</module>
    <module>test-web</module>
  </modules>

各个子模块的功能:

test-core:所有业务的核心业务逻辑。

test-ad:广告的业务流程

test-res:资源的业务流程

test-terminal:终端的业务流程

test-user:用户的业务流程

test-web:整个项目的web前端操作

test-dao:整个项目的数据层

这样的话,一个简单的项目就创建了,一般我们用eclipse创建的web项目,也仅仅能叫web项目,如上述创建的项目,才是真真的J2ee项目。

项目创建完之后,最主要理解的是业务流程和业务逻辑的区别,core是负责具体的业务逻辑处理,如test-user中主要负责各种业务逻辑调用的流程。调用关系如下:

core中是一个个最基本的业务单元,可复用。在业务流程中可以复用core里面的操作。但是业务流程间不可服用。

test-user,test-ad,test-res,test-terminal之间不能调用,test-core内部的业务逻辑可以相互调用。

不能跨层次调用。

 

这样做,以后业务发起来,访问量,并发越来越大或者业务越来越复杂,所以考虑拆分系统,以上面的项目模型,我们可以很容易的拆分系统。针对各个层次各个子系统做有针对性的拆分。

下面举几个系统拆分的例子:

1,一般情况下Core层压力会比较大,我们将Core子系统集群部署,缓解压力,DAO层也单独部署,每个业务块连接不同的DB,Core和DAO如果独立部署就涉及到一个远程部署调用的问题,也就是test-user,test-ad,test-res,test-terminal调用test-core的问题,和test-core调用test-dao的问题。我用的是Dubbo,以SOA服务化的方式给外部提供调用。这样的拆分改动会很小。

2,系统拆分,或者叫垂直拆分

3,拆分后的系统依然无法满足需求,那就继续拆分,那层压力大就扩展那层。

以上这些拆分,举的例子都是某一层的扩展,其实各个层级都可以扩充,但是扩充和拆分的同时会涉及到统一session,数据库读写分离,集群,分布式等等问题,这里就不一一细说了。

当然项目结构上也不一定像我上面讲的那样去构建,要根据自身的业务,技术架构,开发团队等等条件来划分。

 

2.2.3 导入到Eclipse

 

最后倒入项目到Eclipse

多模块项目框架下载地址:

GitHub地址:https://github.com/qianshangding/template

VS2010“未能正确加载包”问题解决方法小汇 本文按照由简至繁的顺序详述了借助网络获知的四种解法,主要面向重装 VS2010 后遭遇题述问题的网友,相关包尤指 VSTS、RadLangSvc、Language、Bootstrap 及 MicrosoftDataEntityDesign。 阅读详情

相关推荐

密码学:一文看懂Base64算法

Base64常常在我们开发中出现,我们可能只知道它是一串乱码(看不懂的符号),知道有时候知道我们需要把一些数据进行base64编码,有时候需要进行Base64解码。但是却不知道它的作用是什么?它存在的意义是什么?还有它是如何生成的?如何编码和解码?上述的疑问相信在你读完本篇文章之后烟消云散。下面开始正文。Base64是什么?它和加密解密操作有什么关系吗?没错,这就是经过Base64编码后的字符串。对它解码后,我们获得以下内容点个关注,是对我持续创作的最大的鼓励!

Shujie 1万+

J2EE基础:maven(1)

方式一方式二开发工具Eclipse修改“MAVEN_HOME\config”下的setting.xml文件,配置本地仓库。注意是:“E:/”而非“E:\”例如:E:/mvn-repository注1:标签在setting.xml文件的53行注2:仓库的作用就是用来存放jar包的注3:仓库的分类中央仓库公司仓库(也叫私人仓库或私服)本地仓库。...

weixin_67465673的博客 1032

STM32cube HAL库两条命令实现i2c通信---Nucleo L476RG用I2C实现tmp117模块温度读取并串口打印

Getting Started with STM32 - I2C Example

m0_54706625的博客 1832

图文详解J2EE开发环境搭建全过程

在J2EE项目实施过程中需要搭建一个完整的开发环境,涉及到的技能和工具包含:JDK、Eclipse、Tomcat、MySQL、Maven、Navicat等等。这些环境对于具备工作经验的开发人员而言想必早已是轻车熟路,但是对于刚入门的新手来说还是颇为棘手。故,在此以文档形式详细记录J2EE开发环境搭建的整个过程。

谷哥的小弟 2万+

万字长文带你由浅入深夯实ARM汇编基础——汇编指令及寻址方式最全梳理(附示例)!

见到汇编就害怕?读完这篇,扫除汇编拦路虎!!(示例丰富,可做手册,随手查阅!)

车载系统攻城狮 1万+

Vue2 - 最新详细实现网站内部打开预览 office 全套附件,在页面弹窗内解析预览 word文档、excel电子表格、ppt演示文稿(docx|xlsx|pptx|pdf|txt等文件)详细代码

vue2,nuxt2,office,文档,文件,查看预览,弹框预览,下载预览,如何预览pdf文档,打开查看,office全套文档,实现在线预览文件,小程序内预览word文件,手机h5移动端网页,nuxt文档在线预览,预览office最好用的插件,下载查看,Office在线预览,vue-office,vue如何使用vue-office教程示例,word文档,ppt,exce表格,预览电子文件,文档无法解析,打不开,报错,失效,保存下载,vue前端预览并下载doc、xls、pdf、txt及图片,vue2中预览p

🏆 前端领域优质创作者 1万+

J2EE 之Maven安装配置

Maven的安装配置 Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一...

qq_42421212的博客 294

芒果YOLOv8改进16:检测头Head篇:即插即用|新颖轻量化非对称多级压缩LADH检测头,原创改进适配YOLOv8高效检测头,检测头新颖性改进,全网首发独一份

YOLOv8代码改进教程:即插即用|新颖轻量化非对称多级压缩LADH检测头🎈

包括YOLOv5、YOLOv7、YOLOv8等模型改进 5611

Eclipse J2EE Maven 配置

有段时间没有做过web,现在在做移动端开发,偶尔心血来潮想搭个SSM框架试试,有些生疏,看看网上的资料有用Maven构建项目的,于是乎就有手痒了。。。 1.环境是mac 的所以在apache官网上找了 maven3下载,这里给出版本列表 http://archive.apache.org/dist/maven/maven-3/ 2.配置环境 然后 mvn -v 傻眼了 通常看不懂或

telencool的专栏 1766

FFmpeg入门详解之110:RTSP协议讲解

TCP/IP 协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。正在上传…重新上传取消RTSP是基于文本的协议,采用ISO10646字符集,使用UTF-8编码方案。行以CRLF中断(\r\n:10,13:0x0A,0x0D),包括消息类型、消息头、消息体和消息长。

福优学苑@音视频+流媒体 2529

车载以太网网络测试-27【SOME/IP-SD简述】

SOME/IP-SD协议是基于IP的可扩展面向服务中间件中的服务发现协议,是汽车电子和嵌入式系统中实现动态服务发现与通信的核心组件。该协议规范详细说明了协议SOME/IP服务发现(SOME/IP-SD)的格式、消息序列和语义。本文将对SOME/IP-SD协议进行详细介绍。

车载网络测试工程师的博客 1956

结合Maven2进行J2EE项目构建

<br />一.背景<br />Maven2 的基本原理很简单,采用远程仓库和本地仓库以及  pom(project object model).xml  ,将  pom.xml  中定义的  jar  文件从远程仓库下载到本地仓库,各个应用使用同一个本地仓库的  jar  ,同一个版本的  jar  只需下载一次,而且避免每个应用都去拷贝  jar  。如图  1  。同时它采用了现在流行的插件体系架构,只保留最小的核心,其余功能都通过插件的形式提供,所以在执行  maven  任务时,才会自动下载需要的

950

西门子S7-1200PLC控制步进电机的组态编程和具体步骤

西门子S7-1200PLC控制步进电机的组态编程和具体步骤 硬件准备: 1) 一个S7-1214C DC/DC/DC,订货号:6ES7 214-1AG40-0XB0 2) 一个86系的步进电机+相应的驱动器 3) 一个20A的西门子24V电源(步进驱动器及plc电源) 4) Portal V15版本 组态及编程: 1) 创建一个验证项目,添加cpu( S7-1214C),双击“工艺对象”,选择“运动控制”的TO_PositioningAxis V6.0版本,如下图所示: 2) “确定”后,系统自动生成名

Robot_PLC_HMI_Automation 1万+

㈠Eclipse/MyEclipse使用Maven构建JavaEE项目

请先确认你的电脑已经安装了maven,可以参照【项目管理和构建】——Maven下载、安装和配置(二)来进行Maven的下载安装和配置. 创建项目 打开Eclipse/MyEclipse,点击File–>New–>Project–>Maven Project 点击Next–>Next,选中web-app,然后Next 输入Group ID和Artifact

MrSaltedFish的博客 1093

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

使用Maven Spring Boot 和 Mybatis 构建 J2EE 项目

使用Maven Spring Boot 和 Mybatis 构建 J2EE 项目 原文来自James Liu,原文地址:https://jmsliu.com/4378/build-j2ee-project-with-maven-spring-boot-and-mybatis.html   学无止镜。这段时间我在J2EE方面又迈了一小步,尽管它并不是一个新的技术。J2EE始于1999年,被称为...

qq_40604853的博客 553

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JavaEE 进阶第五期:Maven 之道,项目的依赖艺术与构建哲学

本文介绍了Java项目构建工具Maven的核心功能和使用方法。Maven通过项目对象模型(POM)管理项目的编译、测试和文档制作,是Java开发必备工具,特别是在Spring/SpringBoot框架中。主要内容包括:1) Maven的项目构建功能,通过标准化的生命周期(clean、compile、test等)实现自动化构建;2) 依赖管理机制,通过GAV坐标自动下载并管理Jar包依赖关系;3) 仓库体系,包括本地仓库缓存和远程仓库(中央仓库/私服)获取依赖。文章还演示了在IDEA中创建Maven项目、配置

2401_85198927的博客 1073

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

使用Maven构建JavaEE项目

学习要点 Maven简介 Maven构建项目 MyEclipse中Maven的使用 Maven简介 Maven作用 对第三方依赖库进行统一的版本管理 统一的目录结构,统一各平台各IDE目录 统一的软件构建阶段 Maven是项目构建工具 定义项目的组成、管理项目依赖和发布 下载Maven 下载地址:http://maven.apache.or...

weixin_30776273的博客 588

Maven构建JavaEE的聚合项目

maven是一个构建Maven是一个项目管理和综合工具。maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。

陈大伟的博客 714
上一篇: Hadoop之命令集合(全)
下一篇: Memcached之Window和Linux安装(1)
qianshanding0708
博客等级 码龄11年 425粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值