星空网 > 软件开发 > Java

多War项目中静态文件的共享方案

【原创申明:文章为原创,欢迎非盈利性转载,但转载必须注明来源】

 

互联网产品中,一般会有多个项目(Jar、WAR)组成一个产品线。这些WAR项目,因为使用相同的前端架构(jQuery、easyui等),在各个项目中都会存在这些组件的代码,以及其他各个项目中都要用到的公共资源文件。

传统的做法,在每个War项目中拷贝一份这些文件,分别打包到各个War中。如果这些组件非常稳定,很少升级,也几乎不存在BUG需要修改,这么做问题也不大。但如果是相反的情况,前端人员就要忙疯了,因为他要在各个项目中进行修改调试,而且还要记住哪些项目修改了,哪些还没修改。

针对这一类问题,有什么比较好的处理方法吗?

1 静态文件从War包中独立

不管后续采用哪种方案,这都是必须要做的一个步骤。区别在于独立出来的这些静态文件,采用哪种方法组成一个独立的module。

我们项目中典型的static目录内容如下,其他项目基本类似。

多War项目中静态文件的共享方案

可以看到,其中包括jquery\easyui的代码将会在各个项目中重复出现。

2 将静态文件作为独立jar包开发

将资源文件独立出来后,使用一个独立的jar包进行开发;其他war项目依赖这个jar包。

2.1 静态文件jar项目

多War项目中静态文件的共享方案

在项目的src/main/resources目录中创建static目录,并将公共静态文件复制到该目录中。

多War项目中静态文件的共享方案

修改pom.

2.2 War包项目引用

首先修改pom.

 

<dependency>

   <groupId>cn.codestory.research</groupId>

   <artifactId>common-static</artifactId>

   <version>0.0.1-SNAPSHOT</version>

</dependency>

然后修改spring配置文件中的mvc:resources部分为

<mvc:resources mapping="/static/**" location="classpath:/static/"  />

 

页面引用静态文件时,直接使用代码

<script type="text/javascript"  src='/images/loading.gif' data-original='http://www.cnblogs.com//static/javascript/framework/jquery.min.js'></script>

<script type="text/javascript"  src='/images/loading.gif' data-original='http://www.cnblogs.com//static/javascript/framework/jquery.easyui.min.js'></script>

这样就能正常访问jar包中的静态文件。

如果war包中需要添加本项目特有的静态文件,或者是对jar中的部分静态文件做修改适应本项目的需要,可以保存在war项目的目录中/src/main/resources/static中,其他代码都不需要修改。

如果原war中的静态文件保存在src/main/webapp/static目录中并且不想移动这些文件,修改spring配置文件中的mvc:resources内容为

<mvc:resources mapping="/static/**" location="classpath:/static/,/static/"  />

2.3 小结

这种修改方法,不修改项目的部署方式就能实现静态文件的共享。只是它需要构建一个私有Maven仓库,在项目之间共享才比较方便。

前端修改代码时,只需要在common-static.jar项目中修改即可。当然,因为涉及到更多的项目,修改也一定要慎重。这可以通过升级jar版本号的方法来实现各个war项目的逐渐升级。

3 静态文件作为独立WAR,依靠部署来实现

在生产环境,将静态文件独立部署到一台服务器,采用Tomcat或Http Server。有两种方案可以实现static文件的转发。

3.1 nginx根据URI地址进行转发

这种方式对项目的修改比较少,也不需要增加新的域名,下图中可设置转发规则:

1、uri是/static/**,则一律转发到static server

2、host是app1.codestory.cn,转发到app server 1

3、host是app2.codestory.cn,转发到app server 2

多War项目中静态文件的共享方案

3.2 静态文件服务器申请独立域名

部署方案跟前面类似,区别在于转发规则的设置。同时,在war包中的script引用路径必须包括host的完整URL

<script type="text/javascript"

      src='/images/loading.gif' data-original='http://static.codestory.cn/static/javascript/framework/jquery.min.js'></script>

多War项目中静态文件的共享方案

3.3 应用CDN部署静态文件项目

更进一步的解决方案,是使用CDN部署,将静态文件部署到全国各地的机房,用户能够自动访问就近的服务器,能提供更高的访问速度。

不过,这个方案就完全是部署的问题了,项目有需要且公司有钱的可以去尝试。

 




原标题:多War项目中静态文件的共享方案

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Amy跨境:墨西哥市场的电商发展机会:https://www.ikjzd.com/articles/124146
亚马逊仓库上架已成龟速,3.17之后卖家再次遭受断货暴击:https://www.ikjzd.com/articles/124147
开开眼!这4个亚马逊联盟网站必须安排:https://www.ikjzd.com/articles/124148
FB更新|Facebook取消目标费用出价策略; Messenger启动业务收件箱:https://www.ikjzd.com/articles/124149
7天如何利用谷歌搜索广告赚取275美元:https://www.ikjzd.com/articles/124150
用 “ 中国制造 ” 抵制 “ 中国制造 ” ?!:https://www.ikjzd.com/articles/124151
Twitter和Meta的付费认证服务值得购买吗?:https://www.kjdsnews.com/a/1836404.html
零售晚报:携程发布318成绩单 近800万商家GMV增长101% :https://www.kjdsnews.com/a/1836405.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流