【问题标题】:how to build project after code changes without mvn clean install?代码更改后如何在没有 mvn clean install 的情况下构建项目?
【发布时间】:2012-08-26 16:26:23
【问题描述】:

我在 eclipse 中有一个项目,一个以 appengine sdk 和 maven 作为构建器的 java 应用程序。

.class 文件在我启动全新安装之前不会刷新,因此我对代码所做的每一次更改都必须运行:

  • mvn 全新安装
  • mvn eclipse:clean
  • mvn eclipse:eclipse

然后尝试启动我的应用程序。

请帮帮我,这真的很烦人。谢谢

【问题讨论】:

  • 你试过只运行mvn compile吗?我不清楚您是否因为不熟悉 Maven 而遇到问题,或者您的构建过程有什么特别之处需要运行install 阶段。
  • 您使用哪个版本的 maven-compiler-plugin?您使用哪个 Maven 版本?为什么在 Eclipse 中使用 mvn eclipse:eclipse 而不是 m2e 插件?
  • 其实我使用的是apache-maven-2.2.1安装。我以 Maven 插件使用此安装的方式配置 Eclipse。我认为我的问题是 pom 构建得不好。
  • 我只能通过mvn install,然后mvn eclipse:eclipse来刷新deployment中的代码。但是保存java文件后代码不会自动刷新吗?好像构建不工作。

标签: java google-app-engine maven


【解决方案1】:

您可能正在寻找热部署功能。在使用 webapp 时,在大多数情况下,仅仅编译一个 java 类是不够的——通常您必须创建一个 war 包,并且几乎总是必须将新代码重新部署到应用服务器。

mvn 包 应该足以创建战争。只要您不删除或重命名任何文件,您就不需要运行 mvn clean。这会让事情变得更快。

但是,要实现热部署(即在 Web 引擎开发服务器上即时获取新代码),您需要做一些额外的工作。确保您使用Google Plugin for Eclipse - 您可以将它与 maven 一起使用。该插件至少应该处理静态文件热部署。使用 Eclipse 在调试模式下运行应用程序会有所帮助,并且它能够动态替换方法的主体。

查找此question 的更多信息答案。

【讨论】:

  • 我实际上是在使用eclipse插件,显然有一个pom指定了建筑特征,ad mvn运行它。我尝试了相关帖子中给出的解决方案...修改 web_apengine.xml(手动),然后重新启动应用程序,但没有任何反应;我在应用程序中更改的代码不显示
【解决方案2】:

从问题中不清楚到底发生了什么以及为什么。为了弄清楚这一点,我们需要查看 pom.xml 和显示相关文件夹和文件的“tree”命令输出。然后我们可以将其与相关的 maven 插件应该做什么进行比较,然后从那里开始工作。

就目前而言,这是一个相当古老的问题,目前尚不清楚到底发生了什么,而且 OP 很久以前就消失了。如果今天发生此问题,最好的办法是发布到 App Engine Public Issue Tracker,尽管如果问题不在 App Engine SDK(或相关的 maven 插件)中而是来自第三方,这可能是不合适的maven 插件行为不正常(例如maven-compiler-plugin)。但是,在进行更深入的分析之前,很难提前知道。

【讨论】:

    【解决方案3】:

    我知道这是一篇很老的帖子,但我最近在使用 STS 和 Websphere 应用程序服务器时遇到了这个问题。希望这可以帮助任何人遇到这个古老的帖子。

    查看 Eclipse 市场中的“FileSync”插件。它允许将您的工作区文件与外部目录同步(想想您的应用程序服务器)。安装“FileSync”后,您可以将其配置为将您的工作区文件直接“复制/粘贴”到应用程序服务器的展开的 .war 目录中。将您的文件复制为符合 j2ee 的格式可能需要一些时间,但它对我来说就像一个魅力。配置完成后,您基本上只需更新文件、保存它们,您的应用程序就可以使用了!

    【讨论】:

    • 感谢您推荐这个插件!它解决了我的问题,在快速配置 JPS 文件后,现在自动更新到应用程序目录!我不再需要重新启动tomcat了! :) 如果有人找不到配置文件同步的位置,请执行以下操作:右键单击 Eclipse 项目 > 属性 > 文件同步。
    【解决方案4】:

    实际上只使用 Eclipse m2e 插件就可以轻松地热重载您的 App Engine 应用程序,并且不需要 GPE 插件或任何其他特殊连接器:

    1) 使用提供的 Google 原型或其他自定义原型之一,像往常一样在 Eclipse 中将您的 App Engine 应用创建为 Maven 项目。

    2) 配置您的项目,并在项目的根目录中使用mvn clean install 进行初始构建以创建初始target/<artifact>-<version> WAR 目录。

    3) 在项目根目录中使用mvn appengine:devserver 启动开发服务器,并确保您可以在浏览器中查看本地提供的应用程序。让开发服务器保持运行状态。

    4) 在 Eclipse 中,确保选中 Project -> Build automatically

    现在,每当您保存.java 文件时,Eclipse 将自动在target/<artifact>-<version>/WEB-INF/classes 下构建相应的.class 文件。在 Maven 项目中,此目录设置为 .classpath 中类的输出目录。开发服务器将检测文件更改并热重新加载您的应用程序,以便在您在浏览器中刷新应用程序时立即显示更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 2019-06-17
      • 2018-10-08
      • 1970-01-01
      • 2016-11-11
      • 2014-03-30
      • 1970-01-01
      相关资源
      最近更新 更多