繁体   English   中英

项目结构组织:如何使其更好?

[英]Project structure organization: how to make it better?

全部-

我们有几个Web应用程序,所有这些应用程序都是基于跨组织的不同团队随时间而开发的某个版本的Spring。 它们各自产生自己的WAR,在不同的环境中工作,并且由于其功能紧密结合在一起,因此经常部署在同一台计算机上。 因此,我们最终得到:

tomcat/webapps/{A, B, C ... }

部署后,每个工具都使用一组非常相似的工具链,并在所有位置复制所有Spring jar和依赖项。

我想知道如果有一种方法可以使项目结构较好,部署作为一个单一的战争,同时允许每个web应用活在自己的源回购,有其自身的发展步伐?

非常感谢任何指针或引用。

奥立佛

在单个WAR中进行部署会将所有项目耦合在一起。 修改一项将意味着重新部署所有项,并伴随进行质量检查以验证并进行回归。 我不建议这样做。

可以通过将它们放在Tomcat / lib中来解决Spring JAR的多个副本。 它们由Tomcat类加载器而不是WAR类加载器加载。 这意味着每个应用程序都必须在同一版本的Spring上。 升级一个意味着全部升级。 您必须一次进行所有回归测试。

单独的WAR文件对您有何危害? 如果Tomcat / webapps目录具有大量部署,您在乎什么呢? 优点之一是它们可以在单独的发布计划中。 这是一个很大的礼物。 确保这样做之前有充分的理由。

您可能必须移至jboss之类的应用服务器,但是您不能使用Ear文件并让Maven为您构建模块吗? 这样,如果您希望每个人都有自己的pom,然后将另一个文件包含pom作为ear文件,则可以将它们放在单独的存储库中:

这是Maven Ear插件:

http://maven.apache.org/plugins/maven-ear-plugin/

这是一个有关多个spring app耳文件的较旧的博客文章(如果需要,可以将所有战争共享给单个applicationContext):

http://blog.springsource.com/2007/06/11/using-a-shared-parent-application-context-in-a-multi-war-spring-application/

根据您对另一个答复的评论之一,听起来您可能对maven的多模块项目功能更感兴趣。 这将允许您定义一个父POM,该POM具有在多个项目中管理的一致的依赖性和项目布局。

将每个项目合并到一个WAR中可能会受益,但是我确实认为这确实是“草丛总是绿色”的问题之一。 我要牢记的关键一件事是弄清楚如果合并项目,则重新部署要花多长时间(或更短!)。

考虑一下OSGi。 您可以一次部署所有依赖项,将单独但相互关联的模块作为OSGi捆绑包构建,并独立部署和升级它们。 您还可以选择将它们全部部署为WAR(Web捆绑包)还是将其部署为JAR,而将一个或多个WAR导入它们以捆绑一切。 Virgo Web Server (以前是Spring DM Server)非常好,可以立即进行此类操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM