如何在没有mvn clean install的情况下更改代码后构建项目?

时间:2012-08-31 20:54:33

标签: java google-app-engine maven

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

在我启动干净安装之前,.class文件不会刷新,因此我在代码中执行的每项更改都必须运行:

  • mvn clean install
  • mvn eclipse:clean
  • mvn eclipse:eclipse

然后尝试启动我的应用。

请帮帮我,真烦人。感谢

4 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

目前还不清楚究竟究竟发生了什么以及为什么会这样。为了解决这个问题,我们需要看到pom.xml和"树"命令输出显示相关的文件夹和文件。然后我们可以将它与相关maven插件应该做的事情进行比较,并从那里开始工作。

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

答案 2 :(得分:1)

我知道这是一篇非常古老的帖子,但我最近在使用STS和Websphere应用服务器时遇到了这个问题。希望这有助于任何人碰到这个古老的遗物。

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

答案 3 :(得分:0)

实际上只使用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将自动在.class下构建相应的target/<artifact>-<version>/WEB-INF/classes文件。在Maven项目中,此目录设置为.classpath中类的输出目录。开发服务器将检测文件更改并对应用程序进行热重新加载,以便在浏览器中刷新应用程序时立即显示更改。