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

Java 如何在多个Web应用程序之间共享公共资源?,java,image,resources,share,Java,Image,Resources,Share,我有4个web应用程序。但是图像、css、Java脚本都是一样的。 当我在一个项目中进行更改时,我需要将更改传播到所有项目。 最好的方法是什么——只使用资源创建公共jar,或者使用类似于SVN中的链接的东西,或者其他方式? 谢谢。几条建议 将它们放在一个公共jar文件中 将它们放在共享URL上 使用maven资源插件,您可以指定一个目标,在构建war文件之前将公共资源复制到指定的项目中 我还看到了在构建过程中使用公共目录链接(ln-s)。这避免了创建资源物理副本的空间和时间负载。我也有同样的要

我有4个web应用程序。但是图像、css、Java脚本都是一样的。 当我在一个项目中进行更改时,我需要将更改传播到所有项目。 最好的方法是什么——只使用资源创建公共jar,或者使用类似于SVN中的链接的东西,或者其他方式?
谢谢。

几条建议

  • 将它们放在一个公共jar文件中
  • 将它们放在共享URL上

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


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

我也有同样的要求,并使用Bower和一个小的Perl脚本得到了我所需要的

跨共享项目进行简单的文件复制的问题在于,如果将来出于某种原因,您需要某个项目临时使用稍加修改的版本,那么实际上您将中断项目或部署例程。通过将共享资源放在它们自己的版本控制存储库中,这样每个项目都可以引用“最新”或“1.0.0”等特定版本,这是一种更干净的跨项目管理共享资源的方法。。。现在,解决方案是:

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

Script()因此,我使用此perl脚本将获取的共享资源部署到项目中的正确位置。

(升级到答案)

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

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


  • 是的,它们非常灵活,允许公共资源和使用它们的项目之间进行更清晰的分离。多模块项目将在各种资源之间提供类似的松散耦合。这两者之间有很好的比较。我想说的是,一般来说,这取决于您的web应用程序的关联程度,以及它们是否会被用作另一组web应用程序的一部分。如果没有,那么资源插件可能会更快地使用它。将图像、html页面、css、Java脚本等资源放在公共jar文件中似乎并不容易。它们应该在war文件中。打开共享URL似乎不是一个好的解决方案-它需要重新制作许多应用程序。这可能意味着更改应用程序,是的。但这并不意味着它不是在应用程序之间共享资源的好方法。也就是说,如果需要,您可以动态更改它们。:)我迟到了,但共享URL也将优化web模块之间的borwser缓存。