【问题标题】:Eclipse: Is it possible to publish Javascript edits to an external Tomcat instanceEclipse:是否可以将 Javascript 编辑发布到外部 Tomcat 实例
【发布时间】:2012-03-18 13:58:41
【问题描述】:

我正在将应用程序从 Flex 转换为 Javascript。我在 Eclipse for Flex 中的工作流程是使用 Maven 在 Tomcat 中启动我的 Java Web 应用程序,然后将 Eclipse 配置为将已编辑的 Actionscript 文件编译为 SWF 并将其保存到展开的 WAR 目录(Maven/Cargo 使用)。

它在很长一段时间内运行良好,让我可以编辑 actionscript 源代码、翻转浏览器、刷新屏幕并查看更改。

不过,我是 Javascript 的新手,并且正在努力启动和运行相同的工作流程。我不明白的部分是如何告诉 Eclipse 我希望将我编辑的 Javascript 文件写入特定目录(包含分解的 WAR)。在我的 WAR 项目(一个 WTP 动态 Web 项目)中,有一个看起来像 Javascript 构建路径的东西,称为“Javascript 资源”,但没有输出目录。

如果可能的话,我真的很想继续通过 Maven 运行 Tomcat 和 Jetty。我意识到我可以通过 WTP (M2E-WTP) 做我想做的事,但我更喜欢使用 Maven/Cargo。

【问题讨论】:

  • 我不相信这是可能的,除非你每次保存时都让 eclipse 启动一个 maven 构建。
  • 你可以在 Eclipse 构建中启动任何你想要的东西,因为你可以运行 ant 脚本(见下面我的回答)
  • 然而,我不得不说我觉得需要做这样的调整很奇怪。我宁愿让 maven 编译我的 swf,你可以通过使用 ant 文件(再次)来试点 flex 编译器 ant 任务

标签: java javascript eclipse web-applications maven


【解决方案1】:

Eclipse 引入了“builder”的概念来构建项目。它带有硬编码的构建器,例如 java 编译器或 WTP 的 war builder。

但 Eclipse 也可以使用 ant 文件 设置您自己的 Builder:在您的项目上,右键单击项目属性,转到 Builders 部分,单击新按钮。

您可以使用 ant 文件的参数并使用 eclipse 中定义的变量来构建它们

如果您希望 eclipse 收到生成的文件的通知,请不要忘记填写 刷新选项卡

不要忘记填写 构建选项 选项卡的“指定相关资源的工作集”部分,以便在 Eclipse 中每次更改构建文件使用的源时调用您的构建器。

还可以转到“targets”选项卡以指定在哪种类型的构建阶段调用您的 ant 文件以及调用哪个目标。

我知道此解决方案可能不是最适合您的解决方案,因为您的构建过程将被多次描述,但它可能会帮助您实现目标。

【讨论】:

  • 我不知道这个功能,非常感谢这个建议!但是,如果文件同步方法有效,我想我会将其标记为答案,因为它比我不太了解的 Ant 更容易设置。
【解决方案2】:

如果您想继续在 Eclipse 中使用纯 Maven/Cargo 方法,Denis 建议创建自定义构建器可能是最佳解决方案。

如果您要部署到一个展开的战争目录,那么另一个类似的想法是使用文件同步插件。这些将自动将修改后的文件复制到配置的文件夹中。见:

----------

FWIW,我不认为 Maven:Tomcat/Cargo 插件非常适合实时 Web 开发,尤其是在前端方面。它们主要用于受控部署或在没有初始设置的情况下引导服务器。我的想法:

Eclipse WTP 曾经非常适合实时 Web 开发,但几年前我停止使用它,因为它太难让它在 Maven 环境中正常工作。 Fwiw,这些天我最喜欢的方法是这样的:

  • 不要安装或使用 Eclipse WTP。
  • 使用 m2eclipse 将 Maven 与 Eclipse 集成。
  • 使用 Maven 进行干净构建并在目标文件夹中生成分解的 WAR 目录。
  • 设置独立的 Tomcat 服务器以从展开的目标文件夹加载 webapp。
    • 我怀疑 tomcat 设置/启动可以集成到 Maven 中。不过,这对我来说不值得额外的复杂性。

然后,我配置 JRebel(通过 Maven 自动)来处理 Java 和 Web 资源文件的更改。使用此设置,我几乎不必重新部署或重新启动 Tomcat。立即看到所有更改(java、html、js 等)。

认为可以在没有 JRebel 的情况下使用相同的设置(仅适用于非 java 文件),方法是将 Web 源文件夹配置为 Eclipse 中的源文件夹,自定义目标输出路径是爆炸的战争目录。如果这不起作用,那么使用上面提到的自定义构建器或文件同步解决方案肯定会起作用。

【讨论】:

  • 这个文件同步插件看起来和我需要的完全一样。 WTP 和 JSDT 都没有我能找到的“自定义目标输出路径”,否则这将是我的解决方案。实际上,您的文件同步建议与 Flex 所拥有的非常相似……一个“自定义目标输出路径”,我可以指向我的 Maven/Cargo Tomcat 爆炸 WAR。 JRebel 在我的 TODO 列表上也有一段时间了……有了这个解决方案可能需要加速。
  • 它完美无缺,只花了大约 5 分钟的时间来设置。再次感谢。
  • 酷。关于自定义输出路径,我上传了一张截图。您必须选中“允许源文件夹的输出文件夹”才能独立调整每个源文件夹的相应输出路径。 i.imgur.com/w59AV.png 。不过,我并不是 100% 肯定这适用于您的场景,详细信息可能取决于 Eclipse 版本。
  • 感谢您的屏幕截图。我知道该功能,但它是 Java 构建路径、Javascript 构建路径的一部分,并且 Web 程序集描述符没有我知道的此类功能。我认为不可能用非 Java 的东西覆盖 Java 构建路径,是吗?
  • 这并不直观,但“Java 构建路径”下的源文件夹并不特定于 Java 文件。这是我使用实际 maven webapp 文件夹的内容测试的另一个屏幕截图:i.imgur.com/wJNlY.png。配置完成后,我运行project...clean,将/webapp文件夹下的所有文件复制到target/webapp-root文件夹下。如果您没有看到相同的功能,那么它可能归结为 Eclipse 版本(我使用的是 Indigo-SR1),或者 WTP 可能阻止了该功能。请务必检查包含/排除的过滤器,并可能尝试将包含设置为“* * / *”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
  • 2012-08-17
  • 2020-03-31
  • 1970-01-01
相关资源
最近更新 更多