虽然J2EE模块引用功能允许您创建通用的Java库项目,但我找不到一种简洁的方法来为web内容这样做。
我有一些常用的JSP、CSS文件、JavaScript库甚至描述符片段,我希望在许多动态WebProject项目中使用它们,以便这些工件只在一个地方编辑,但会导出到每个动态WAR文件中。
令我惊讶的是,如果不编写自己的脚本并连接到导出过程中,我就不能找到一种在web空间中促进可重用性的方法。
有没有办法做到这一点?谢谢。马特。
发布于 2010-10-28 06:53:48
我已经在这个问题上挣扎了很长时间,最后偶然发现了一个很好的解决方案:“链接文件夹”。这是一个类似于符号链接的Eclipse特性--它允许您将单个物理文件夹映射到多个项目中。这个解决方案的好处在于,它不需要任何特殊的构建步骤,因此Eclipse可以自动将更改部署到本地Tomcat服务器上进行测试。
我的配置如下:我有一个名为"SharedContent“的项目。在WebContent目录中,有一个子目录"shareRoot“。所有可重用的文件-- .jsp、.css等--都位于SharedContent/WebContent/shareRoot下。这是一个动态Web项目,因此启用了所有适当的编辑器,但我从未实际构建或部署它。
在我的其他项目中,我添加了一个指向shareRoot的链接文件夹。在Eclipse3.6中,步骤如下:
共享内容现在映射到您的项目中。令人恼火的是,当引用这些文件时,您必须在URL中包含"shareRoot/“,但是您可以使用您喜欢的URL重写过滤器来解决这个问题。
您可以在Java源代码树中使用类似的技巧将Java文件映射到多个项目中。我已经开始这样做了,而不是将共享代码构建到.jar文件中,因为它避免了每次您想要测试本地Tomcat服务器中的更改时都需要重新构建.jar。
发布于 2008-12-14 18:02:13
我认为编写自己的脚本(例如,使用ant自定义构建步骤,在eclipse中可以轻松配置)是更实用的解决方案之一。
你也可以创建多个webapp并引用它们各自的资源--使用css、图片和类似的东西会很容易,而不是jsp需要访问你的代码。
我可以想象一下tomcats在上下文(例如webapplication)中使用crossContext="true“选项的一些技巧,允许一个应用程序访问另一个应用程序中的类,但还没有尝试过。
抱歉,我相信这不是你想听到的答案。
发布于 2008-12-14 18:13:07
如果您使用的是Subversion,则可以使用svn:externals来引用两个项目中的公共文件。然后,您可以在一个位置编辑公共文件,如果执行svn up,则所有文件都将同步。
https://stackoverflow.com/questions/348469
复制相似问题