您好,欢迎来到暴趣科技网。
搜索
您的当前位置:首页模块化之Spring3.0webfragment和gradle构建项目

模块化之Spring3.0webfragment和gradle构建项目

来源:暴趣科技网
模块化之Spring3.0webfragment和gradle构建项⽬

1.背景

模块化开发很久以前就开始普及的概念。但是到了企业实际情况中,真正把模块化作为系统架构的核⼼的不多。或者说对模块化有这个意识,但是具体到底该如何实现,有些模糊,同时也许因为项⽬紧、任务中、deadline时间段,从⽽更将模块化抛掷脑后。先要解决⽣存问题嘛,举个不恰当的例⼦,饱暖思淫欲。

从2014年底2015年初,我负责的项⽬就处在了“饱暖思淫欲”的阶段,于是我也开始想开始朝着⽅⾯来实现。确实刚开始就遇到了问题,有⼼杀敌⽆⼒回天。⼀晃2年过去了,期间换了⼀家公司,学习了⼀些新的思想和技术。慢慢的从程序员开始响架构师转变,模块化更是成为了我掌中挚爱,⼀定要让它开花结果。程序员们经常谈及架构⼀次,⽽架构师似乎也变成了模糊⽽⼜神秘的概念。从⼀个⾓度来说,架构其实就是组建和组建之间交互⽽组成。⼯欲善其事必先利其器,不管所从事的⾏业业务多么复杂,技术多么⾼深,我想⼀切从简单的做起,⼀步⼀步⾛上开花结果的道路。

2.实现思路

对于系统的真实架构,可以畅谈三天三夜,可以出书可以当作⼀门课程教学。在此我们假设我们的系统简单到如下图的结构。因为任何架构的终极武器都离不开“分⽽治之”,从不同⾓度去“分⽽治之”,所有说到底经过层层分析,我们还是需要对某⼀个⼩模块进⾏分析实现,即逻辑视图+物理视图分析。

如图所描述的,我们希望最后整个系统的组成不是⼀个java web项⽬。⽽是有⼀个主项⽬(master project)和多个⼦项⽬(slave project),主项⽬通过引⽤⼦项⽬构成整个项⽬。项⽬中只有代码(包括主项⽬和⼦项⽬),jar包采⽤dependency的形式,从⽽避免了传统jar包全在lib中的形式,⼀个项⽬被jar包撑的太⼤太臃肿,⽽对于jar版本的控制也没办法很好的管理。

如果有⼀天,我们需要开发⼀个类似于A功能,但是⼜不完全⼀样,不管我们采⽤何种⽅式升级、更新A功能,不会影响其他模块,⽽A功能本⾝⼜是很容易替换和更新。针对上述描述,简单的构建这么⼀个结构,我选择了spring3.0 web fragment作为切割模块的核⼼⼯具,gradle构建项⽬,解决jar依赖问题。

3.实现步骤

开发⼯具:Eclipse4.5.2gradle版本:Gradle2.14.1

3.1新建主项⽬(dynamic web project)

Eclipse新建dynamic web project很⽅便,不做过多描述。

3.2新建第⼀个⼦项⽬(Web Fragment Project【不是gradle项⽬】)

第⼀步:选择项⽬类型

第⼆步:填写项⽬名称,注意红框内容,选好依赖的主项⽬。

第三部完成:点击finish后,项⽬结构如图:

第四步:编写⼀个servlet,新建⼀个包,在该包下编写servlet,如图:

第五步:编写jsp

第六部:编写fragment-web.xml,配置servlet的跳转,xmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"beforemodule

test.jsp

module3Servletbeforemodule.model3

module3Servlet/servlet3/module3

第七步:缺少依赖的jar可以加⼀下,如servlet-api.jar第⼋步:完整的项⽬结构如图:

3.3新建第⼆个⼦项⽬(Web Fragment Project【不是gradle项⽬】)

过程和3.2过程⼀样,唯⼀不同的是,⽤Eclipse⾃动⽣成的fragment-web.xml中,带有display-name标签,要去掉该标签。因为当主项⽬同时引⽤2个fragment项⽬时,项⽬会系统⽣成display-name,若配置⽂件⾥有这个标签,tomcat启动会报错。

3.4新建第⼆个⼦项⽬(Web Fragment Project【不是gradle项⽬】)3.5新建第⼀个gradle⼦项⽬(NEW GRADLE PROJECT)

第⼀步:新建gradle项⽬

第⼆步:修改build.gradleapply plugin: 'java'apply plugin: 'eclipse'

repositories { mavenLocal() mavenCentral()}

dependencies { //Servlet

compile \"javax.servlet:jstl:1.2\"

compile 'javax.servlet:servlet-api:2.5' // 编译期}

第三部:项⽬结构如图,类和jsp内容同3.2内容⼀样,仅名字有区别。

第四部:refush gradle project

右键项⽬,选择gradle,刷新gradle项⽬。添加jar依赖。

3.6新建fragmentproject,convert to gradle⼦项⽬

配置⽂件如3.5build.gradle内容。

3.7将主项⽬关联4个⼦项⽬即可。

4.遇到的问题及解决

4.1 fragment和gradle如何在⼀个项⽬存?

解决以下两个问题:

1.新建gradle项⽬,通过proejct facets设置web fragment project。2.新建web fragment project,convert to gradle project。

4.2 通过Depolyment Assembly引⽤多个项⽬时报

错,The display name was defined in multiple fragments with different values including fragment with name [XXX]⼀个项⽬时不抱错?

在Eclipse创建⼯程的时都⾃动⽣成了display这个标签,但每个web-fragment.xml中的东西⼜都会被统⼀解析,因此导致display元素定义重复了。

5.说明

以上内容写的⽐较仓促,在⽇常⼯作过程中遇到了些疑问,顾记录下来以作查阅。存在⼀些描述不⾜和不详细。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoquwan.com 版权所有 湘ICP备2024080961号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务