2012-02-25 77 views

回答

1

使用Maven资源插件,你可以指定一个copy-resources目标是在构建战争文件之前将公共资源复制到指定的项目中。

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

+2

怎么样maven覆盖? – user710818 2012-02-25 15:27:13

+0

是的,它们非常灵活,可以让公共资源和使用它们的项目之间更加清晰分离。多模块项目将为您提供各种资源之间的类似松散耦合。 [这是](http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-pom-best-practice.html)两者之间的一个很好的比较。我会说,一般来说,它取决于你的web应用程序有多密切相关,以及它们是否会被用作另一组web应用程序的一部分。如果不是,那么资源插件可能会更快处理 – mut1na 2012-02-25 16:05:08

1

夫妇的建议...

  • 把他们在一个共同的jar文件
  • 它们放在共享URL(S)
+0

这似乎不容易把资源,如图像,HTML页面,CSS,在共同的jar文件的JavaScript。他们应该在战争档案。使用共享URL的 – user710818 2012-02-25 16:33:05

+0

似乎也不是一个好的解决方案 - 它需要重做许多应用程序。 – user710818 2012-02-25 16:38:19

+0

这可能意味着更改应用程序,是的。但这并不意味着它不是在应用程序之间共享资源的好方法。也意味着您可以根据需要动态更改它们。 :) – cagcowboy 2012-02-25 16:46:37

3

我有同样的要求,并得到了正是我需要的使用鲍尔和小Perl脚本

在共享项目中执行文件简单复制的问题是,如果出于任何原因将来您需要某个项目暂时拥有稍微修改过的版本,那么您将基本上破坏项目或部署例程。这是通过将它们放置在自己的版本控制存储库来管理整个项目共享资源,更清洁的方式,使每个项目都可以指一个特定版本无论是“最新”或“1.0.0”等......现在的解决方案:

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

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

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
相关问题