如何使用其他项目扩展/自定义WAR

Mar*_*arc 9 java eclipse spring jsp maven-2

我们的项目有以下场景:

  • 打包为war文件的核心Web应用程序(称为Core项目).
  • 需要为每个客户"定制"或"扩展"核心应用程序(称之为客户项目).这主要包括新的bean定义(我们使用Spring),即.用客户特定的实现替换core.war中的服务实现.
  • 我们希望独立开发核心和客户项目
  • 开发Customer项目时,我们需要能够在Eclipse(在Tomcat上)上运行/调试它,并将Core项目作为依赖项
  • 构建Customer项目时,生成的war文件"包括"核心和客户项目.所以.war是应用程序的客户特定版本

我正在寻找关于在工具和项目配置方面做到这一点的最佳方法的建议.

我们目前正在使用Ant,但是希望避免被蚂蚁埋没.有没有人用Maven做过这件事?

我已经看过很多关于如何构建依赖于java应用程序的Web应用程序的帖子,但是根据其他Web应用程序,Web应用程序上没有任何内容.

谢谢!

max*_*dim 14

听起来像Maven WAR overlay会做你想要的.


Gáb*_*ták 3

在 Eclipse 中,有一种“本地”WTP 方法可以做到这一点。它主要使用链接文件夹和 .settings/org.eclipse.wst.common.component 文件中的一些技巧。您可以在http://www.informit.com/articles/article.aspx?p=759232&seqNum=3阅读有关它的文章,其中名为“将 Web 模块划分为多个项目”的章节。这样做的问题是链接的文件夹必须相对于可以在 Window/Preferences/General/Workspace/Linked Resources 选项卡中定义的某个路径变量。否则,链接的文件夹定义(可以在项目根目录的 .project 文件中找到)将包含工作站特定路径。路径变量实际上应该是工作空间根目录。该解决方案与 WTP、部署以及其他一切都可以正常工作。

第二种解决方案是使用ant。忘了它。你会深深后悔的。

第三种解决方案是使用maven。如果你不采取一些技巧,你可能会忘记 WTP 出版的舒适感。像其他人建议的那样使用战争覆盖层。请务必安装 m2eclipse、m2eclipse extras。最近发布了一个扩展插件,可以帮助您。在此博客中进行了描述。我没有尝试过,但看起来还不错。无论如何,Maven 与链接文件夹无关,所以我认为即使是第一个解决方案和这个 Maven 覆盖层也可以在必要时共存。

对于无头构建,您可以使用HeadlessEclipse作为第一个解决方案。它现在(被我)死了,但仍然有效:)。如果您使用 Maven 覆盖 + Eclipse 的东西,则无头构建将被 Maven 覆盖。