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

时间:2011-09-02 16:43:46

标签: java spring tomcat code-organization

全部 -

我们有几个Web应用程序,所有这些都是基于组织中不同团队随时间推移开发的某些版本的Spring。它们各自生成自己的WAR,具有不同的上下文,并且通常部署在同一台机器上,因为它们的功能紧密结合在一起。所以我们最终得到:

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

部署后,每个人都使用一组非常相似的工具链,复制所有Spring jar和依赖关系。

我想知道是否有办法让项目结构更好,部署为 SINGLE 战争,同时允许每个webapp都在自己的源代码中生存并有自己的开发速度?

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

奥利弗

4 个答案:

答案 0 :(得分:3)

在单个WAR中部署将所有项目连接在一起。修改一个将意味着重新部署所有,并伴随QA努力验证和做回归。我不建议这样做。

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

单独的WAR文件对您有什么害处?如果Tomcat / webapps目录有大量部署,您关心什么?一个优点是它们可以在不同的发布时间表上。这是一个很大的收获。在做之前一定要有充分的理由。

答案 1 :(得分:1)

你可能不得不转移到像jboss这样的app服务器,但你不能使用ear文件并让maven为你构建模块吗?这样你就可以将它们放在单独的repos中,如果你想要每个都拥有它自己的pom,然后让另一个带有pom的项目用于ear文件:

这是maven耳塞:

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

这是一篇关于多个spring app ear文件的旧帖子(如果需要,可以分享所有战争的单个applicationContext):

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

答案 2 :(得分:1)

根据您对其他回复的一条评论,听起来您可能对maven's multi-module项目功能更感兴趣。这将允许您定义具有一致依赖关系的父POM和跨多个项目管理的项目布局。

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

答案 3 :(得分:0)

想想OSGi。您可以只部署所有依赖项,将单独但相互关联的模块构建为OSGi包,并独立部署和升级它们。您还可以选择是将它们全部部署为WAR(Web捆绑包)还是将它们部署为具有一个或多个WAR的JAR,并将其导入以将所有内容捆绑起来。 Virgo Web Server,以前是Spring DM Server,非常好用,可以随时使用这种东西。