11

我在 Eclipse 中有一个现有项目(我们称之为“NotPlayProj”),其中有很多仍在开发中的 Java 代码。我使用 play 2.1.0 制作了一个新的 eclipse 项目(我们称之为“PlayProj”)。我的目标是在 PlayProj 中使用 NotPlayProj 中的代码,并让 Eclipse 和 Play 编译器都注意到任一项目中的更改。

如果我进入 PlayProj 的属性并通过 Project 选项卡添加 NotPlayProj,则方法完成和包含在 eclipse 中工作,但 Play compile 看不到结果。我查看了 Play 模块,但这些模块似乎没有做我想要的。

有没有办法做到这一点,理想情况下不修改 NotPlayProj?

编辑---我查看了http://www.playframework.com/documentation/2.0/SBTDependencies,它显示了如何将 jar 从 NotPlayProj 导出到 PlayProj/lib 目录,但这需要每次手动导出 NotPlayProject变化。我怀疑托管依赖部分应该涵盖这一点,但我以前从未使用过 SBT,因此可能缺少一些基本的东西。

4

3 回答 3

2

你需要的是持续集成。

看看 Jenkins: http: //jenkins-ci.org/ 您应该设置一个持续集成服务器并自定义您需要的构建。

示例:您PlayProj在某个服务器上运行,它需要能够使用来自另一个名为NoPlayProj.

重建是必须的,诸如停机时间为零之类的事情很难实现(至少我认为这也不是您所要求的)。您需要使用 Jenkins 实现自动化的步骤是:

1 - 构建和部署NoPlayProj位于某个存储库中的最新版本

2 - 构建和部署PlayProj位于某个存储库中的最新版本,并且还包含您的最后一次提交,您在其中更新了存在的依赖项NoPlayProj

可以在 Jenkins 中配置一个不太复杂的构建和部署指令。这应该会加快你的速度。如果可能的话,另一个建议是对两个项目进行 mavenize,这将帮助您更轻松地管理依赖项。

只是为了澄清一件事,你说:My goal is to use code from NotPlayProj in PlayProj and have both Eclipse and the Play compiler notice changes in either project.

只要您在提交代码之前更新依赖项,那么执行构建的顺序将取决于您想要做什么。

最后一件事,如果您不想部署,则不必这样做,您可以创建 Jenkins 作业,以您只构建的方式。使用 Jenkins,你可以做很多事情,你也可以执行一些你自己的帮助脚本,这些脚本可以为你提供额外的功能。

我希望这很有用。

于 2013-04-04T19:17:48.157 回答
1

要让 Eclipse 在使用 PlayProj 时看到 NotPlayProj 的变化,只需更改 PlayProj 的配置即可。属性-> Java 构建路径-> 项目-> 添加 NotPlayProj 作为依赖项。

没有直接的方法可以让 Play 编译器处理依赖项,除非您将其打包为 jar。考虑配置简单的 ant 任务(外部工具配置 -> Ant build),它将复制您的 jar 文件。任务可以通过按键或按钮触发。

使用托管依赖项,每次在 NotPlayProj 中进行更改时,都必须手动重建它。让 Ivy/Maven 将依赖项放在本地存储库中。之后,Play 将从您的本地存储库中获取最新快照。

这两种方法都需要一些努力。也许您可以看一下运行 Play 的 Python 脚本,也许在执行 play start 时使用 NotPlayProj 扩展类路径就足够了

于 2013-04-05T19:25:15.530 回答
0

虽然我从来没有使用过play框架,但我认为有一种play框架和eclipse都可以理解的格式,那就是Maven。看看http://www.playframework.com/modules/maven-head/home

于 2013-04-05T07:43:58.587 回答