如何在Eclipse项目之间共享Web内容

19

虽然J2EE模块引用功能允许您创建常见的Java库项目,但我找不到一个整洁的方法来为Web内容实现这一点。

我有一些常见的JSP文件、CSS文件、JavaScript库甚至描述符片段,我想在多个动态Web项目中使用它们,这样这些工件只需在一个地方进行编辑,就可以导出到每个动态Web项目WAR文件中。

我很惊讶在Web空间中找不到促进重用的方法,而不需要编写自己的脚本并钩入导出过程。

是否有一种方法可以做到这一点? 谢谢。 马特。

4个回答

13
我曾经为同样的问题苦恼了很长时间,最终找到了一种好的解决方案:“联合文件夹”。这是 Eclipse 的一个功能,类似于符号链接——它允许您将单个物理文件夹映射到多个项目中。这个解决方案的好处是它不需要任何特殊的构建步骤,因此 Eclipse 可以自动部署更改到您本地的 Tomcat 服务器进行测试。
我的配置如下:我有一个名为“SharedContent”的 Eclipse 项目。在 WebContent 目录下有一个子目录“shareRoot”。所有可重用的文件(.jsp、.css 等)都位于 SharedContent/WebContent/shareRoot 下的某个位置。这是一个动态 Web 项目,以启用所有适当的编辑器,但我从未实际构建或部署它。
在我的其他项目中,我添加一个指向 shareRoot 的链接文件夹。在 Eclipse 3.6 中,操作步骤如下:
  1. 在包资源管理器中右键单击需要包含可重用文件的项目的 WebContent 目录。
  2. 选择“新建 -> 文件夹”。
  3. 点击“高级 >>>”按钮。
  4. 选择“链接到备用位置 (Linked Folder)”单选按钮。
  5. 在刚才下面的文本框中,单击“浏览”。
  6. 在源代码树中导航到 SharedContent/WebContent/shareRoot。然后点击“OK/Open/Finish”按钮,直到所有对话框关闭。
现在共享内容已经映射到您的项目中了。令人恼火的是,在引用这些文件时,您必须包含“shareRoot/”在 URL 中,但您可以使用您喜欢的 URL 重写过滤器解决这个问题。
您可以在 Java 源代码树中使用类似的技巧将 Java 文件映射到多个项目中。我开始这样做,而不是将共享代码构建为 .jar 文件,因为它避免了每次想要在本地 Tomcat 服务器中测试更改时需要重新构建 .jar 的需求。

你能逐步详细解释一下 "ShareRoot" 的事情吗? - Siddharth
所以,当我们部署这个应用时,需要确保也在服务器上 git pull sharedRoot 文件夹。请确认。 - zookastos
还是说在 Eclipse 中导出 .war 文件就可以了? - zookastos

3

我相信编写自己的脚本(例如使用ant编写自定义构建步骤,在eclipse中易于配置)是更实际的解决方案之一。

您还可以创建多个Web应用程序并引用它们各自的资源-这对于CSS、图像等很容易,但对于需要访问您的代码的JSP来说就不那么容易了。

我可以想象使用Tomcat的crossContext="true"选项来进行上下文(例如Web应用程序)的一些技巧,使一个应用程序能够访问另一个应用程序中的类,但我还没有尝试过。

抱歉-我相信这不是您想听到的答案...


我也是,但这一点也不舒服。 - Manrico Corazzi
可重用的代码是开发成熟产品的途径。JavaScript世界的限制不应该是前进的方向。 - Siddharth

3

如果你正在使用Subversion,你可以使用svn:externals来引用两个项目中的共同文件。然后你可以在一个地方编辑这些共同文件,如果你运行svn up,所有内容都会被同步。


我已经使用过这种方法,效果非常好。不过,如果有一种方式可以定义一些类似于 JSP JAR 的依赖项,那就太棒了。 - user41871

-2

哈哈,我给你一个晚到的惊喜。

我是中国人,我的英语很差,但我可以帮助你。

Olaf Kock是对的,但他的答案不完美。

这里是完美的答案。你必须参考下面的链接,它可以帮助你。

点击这里

在链接页面中,属性内容框的示例不是精确的,你跟着我:

如果需要分享文件:

a.jsp  svn://myhome.com/svn/myproject/trunk/a.jsp

如果需要共享文件夹:
xml  svn://myhome.com/svn/myproject/trunk/xml

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接