更新Web应用程序的静态资源

时间:2011-09-08 20:18:38

标签: java spring tomcat

我们有一个依赖于资源的网络应用程序(Java + Tomcat + Spring + Maven)。因此app-1.0.1.war取决于resources-1.0.3.jar。当我们需要修复资源中的错误时,我们需要

  • 发布新资源jar => 1.0.4
  • 更新网络应用程序的maven pom中的依赖关系
  • 发布新战争=> 1.0.2
  • 部署网络应用

在我们的团队中,有些人认为这不是一种有效的方法。他们宁愿

  • 发布一个新罐子
  • 在服务器上上传jar

所以基本上没有重新部署应用程序。这似乎更容易,但我可以看到这种方法的几个问题:

  • 您需要对包含资源的jar的名称进行硬编码。
  • 您不知道该应用正在使用的资源版本。

更新Web应用程序的静态资源的常见做法是什么?

1 个答案:

答案 0 :(得分:3)

我们也对我们的项目采用类似的方法。

  • 发布新资源jar => 1.0.4
  • 更新网络应用程序的maven pom中的依赖关系
  • 发布新战争=> 1.0.2
  • 部署网络应用

有很多理由这样做,这些是一些适合我的:

  • 我们的内部jar文件(模块)在许多项目中被重复使用。较旧的项目可能会因新版本而中断。
  • 虽然为单个应用程序编写的点版本可能不会造成任何麻烦,但重要版本可能会破坏整个应用程序。在能够进行此类发布之前,需要进行严格的集成测试。
  • 如果您有相互依赖关系,例如需要1.0.4版本的主应用程序和需要1.0.1的另一个模块 - 主应用程序将始终赢得这个打破平局。如果版本1.0.4破坏了上述模块,则必须先修复它,然后才能部署项目。

如果这些都不适用于您,请考虑阅读Maven文档中的Dependency Version Ranges。这样的事情应该完成你想要做的事情:

<version>LATEST</version>

修改:

  

所以基本上没有重新部署应用程序

这是不真实的,只有每次运行mvn install时都会更新资源 - 每次构建战争时。

所以,是的,你在开发过程中总是拥有最新的jar,但是旧版的战争不会突然与新发布的罐子捆绑在一起。相信我,你绝对不希望如此。

你只是缩短了一步:

  • 更新网络应用程序的maven pom中的依赖关系

你要添加很多风险来删除一步。看看我上面发布的链接,它可能会给你一些更合适的选择。 LATEST可能不是你想要的。