【问题标题】:Development deployment: how to achive edit-and-reload with JSP pages?开发部署:如何使用 JSP 页面实现编辑和重新加载?
【发布时间】:2010-05-03 18:44:52
【问题描述】:

Out 项目使用 WebLogic 作为 Web 服务器,并且主要使用 JSP 作为用户界面。使用标准设置,可以将编辑过的 JSP 文件复制到展开的部署目录中,WebLogic 将自动拾取、重新编译并通过 HTTP 提供新内容。但是,是否可以完全避免复制,这样我只需在编辑器中保存一个文件,它就会立即(嗯,在重新编译几秒钟后)可见?

该项目使用 Apache Ant 作为构建工具。我想我想用符号链接来实现我想要的(因为这只是为了部署我不关心跨平台),但是我不明白如何用 Ant 一次符号链接很多文件。

那么,我该如何实现 save-JSP-hit-F5-in-browser 功能呢

  • 在 WebLogic 中有一些设置;或
  • 使用 Apache Ant 对 JSP 进行符号链接(而不是像现在这样复制它们);或
  • 完全不同的东西?

【问题讨论】:

    标签: jsp ant weblogic symlink


    【解决方案1】:

    可以设置一个 cron 作业来监视 JSP 文件的源目录并将它们复制到服务器上的目标目录。持续集成工具会通过代码签入来触发构建。 SourceForge 有一个服务器来做这件事,CruiseControl 是另一个。

    【讨论】:

    • 你可能误解了,我需要这个来开发。 WebLogic 应该在大约 5 秒内拾取一个更改的文件,所以我想这对于 cronjob 来说将是一个相当耗费资源的任务。
    • CruiseControl 用于开发。我提到它作为 ANT 讨论的替代方案。不确定 cronjob 会占用多少资源,当然取决于它的编写方式。如果您使用的是 Eclipse,您是否考虑过可以添加到构建步骤中的自定义 Builder?
    【解决方案2】:

    最后只好用了Ant的exec工具,因为它的symlink很不方便。此外,delete 遵循符号链接默认情况下,我发现这是一个糟糕的设计决策(幸运的是我没有删除任何无法从 VCS 恢复的内容)。如果指示它不关注链接,那么它也不会删除它们(在 1.8 中有一个标志,但我必须使用旧版本)。因此,我不得不将干净目标的delete 替换为基本上只是运行rm -rexec——它比20 多行Ant mumbo-jumbo 更容易。

    另外,如果有人要做类似的事情:如果创建指向目录的符号链接,不要忘记使用-t 选项到ln。否则,重复运行将在符号链接指向的目录中创建另一个链接。

    总而言之,它现在正在运行,但我对 Ant 感到失望。我想这一切都来自 Java 缺少符号链接支持,但仍然......

    【讨论】:

      【解决方案3】:

      您可以将所有 JSP 文件放在 jsp 文件夹下,然后将该文件夹符号链接到展开的部署目录中的 WEB-INF 文件夹中。

      Ant 有一个创建单个符号链接的可选任务。该任务可以创建符号链接目录,但通过记录那里的符号链接然后稍后重新创建这些符号链接来工作。 (例如,您可以使用 shell 脚本在 jsp 源代码中最初创建符号链接,使用 Ant 记录创建的链接,该链接存储在源文件夹的文本文件中,然后使用此文本文件稍后重新创建链接。)

      http://ant.apache.org/manual/Tasks/symlink.html

      【讨论】:

      • 我不能。这是一个庞大而复杂的项目,重组其结构是不可行的。有什么比将 30 个左右的顶级 JSP 目录单独符号链接到部署目录更好的主意?
      • 我已对我的建议进行了修改。如何创建一个 shell 脚本来进行链接?如果您可以在本地运行 webapp,则另一种选择是修改构建以围绕源目录结构创建分解的 webapp。
      • 如果有一种简单的方法可以从 Ant 调用 shell 脚本,那为什么不呢?我只是不想让它变得麻烦——我已经调用 Ant 来构建项目,所以我更喜欢不需要更改构建命令行的解决方案。
      • Ant 有一个 exec 任务,可用于调用系统命令/shell 脚本。见ant.apache.org/manual/CoreTasks/exec.html
      • 谢谢,这就是我最终确定的 (exec)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      相关资源
      最近更新 更多