如何在许多Web应用程序之间共享公共资源?

时间:2012-02-25 15:06:55

标签: java image resources share

我有4个网络应用程序。但图像,CSS,javascripts是相同的。 当我需要将更改传播到所有项目后,我在一个项目中进行更改。 什么是最好的方法 - 只使用资源创建公共jar或使用类似于SVN中的链接的东西? 感谢。

4 个答案:

答案 0 :(得分:3)

我有相同的要求,使用 Bower 和一个小的 Perl脚本得到了我需要的内容。

在共享项目中执行文件的简单复制的问题是,如果将来出于任何原因需要您的某个项目临时拥有略微修改的版本,您实际上将破坏项目或部署例程。通过将项目放在他们自己的版本控制的存储库中,这是一种更清晰的方式来管理项目之间的共享资源,因此每个项目都可以引用特定版本“最新”或“1.0.0”等...现在解决方案:

Bower 是一个包管理器,除其他外,它可以帮助管理git存储库的检索/依赖。您可以从网址或驱动器上的本地路径获取git存储库。因此,需要在项目之间共享的所有文件都将它们放在各自的git存储库中。然后,Bower可以获取特定版本的共享内容。唯一的问题是,凉亭将它们全部复制到一个特定的子目录中,这并不总是理想的。

脚本(bower-redeployer所以我使用这个perl脚本将获取的共享资源部署到我项目中的正确位置。

答案 1 :(得分:1)

一些建议......

  • 将它们放在一个通用的jar文件中
  • 将它们放在共享网址上

答案 2 :(得分:1)

使用maven资源插件,您可以指定copy-resources目标,在构建war文件之前将公共资源复制到指定的项目中。

我还看到在构建期间使用了一个链接(ln -s)的公共目录。这避免了创建资源的物理副本的空间和时间负担。

答案 3 :(得分:1)

(将user710818's comment提升为答案)

考虑使用Maven WAR插件的叠加功能,如以下链接所述。从第一个链接,

  

覆盖用于跨多个Web应用程序共享公共资源。 WAR项目的依赖关系收集在WEB-INF / lib中,但WAR项目本身覆盖的WAR工件除外。

  1. http://maven.apache.org/plugins/maven-war-plugin/overlays.html
  2. http://java.dzone.com/articles/mavens-war-overlay-what-are
  3. http://www.manydesigns.com/en/portofino/portofino3/tutorials/using-maven-overlays