在 Eclipse 中使用 Play 框架 2.1.x 中的多个项目

Posted

技术标签:

【中文标题】在 Eclipse 中使用 Play 框架 2.1.x 中的多个项目【英文标题】:Using multiple projects in Eclipse with Play framework 2.1.x 【发布时间】:2013-03-18 00:34:23 【问题描述】:

我在 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,因此可能缺少一些基本的东西。

【问题讨论】:

你看过这篇文章了吗,也许对你有帮助:***.com/questions/10226919/… 感谢参考 adis。这不是我所需要的,但它在一般情况下。我想我需要从头开始学习 sbt。 这是你想要做的***.com/questions/10090829/… 吗? 没有。该问题中描述的方法仅处理我已经在工作的事物的日食方面。我需要找到一种方法让 Play 编译器查看其他项目,而无需在每次更改后手动导出类。到目前为止,play 可以处理的唯一方法似乎是将另一个项目变成 SBT 版本。 【参考方案1】:

您需要的是持续集成。

看看詹金斯: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,您可以做很多事情,还可以执行一些您自己的帮助脚本,这些脚本可以为您提供额外的功能。

我希望这很有用。

【讨论】:

【参考方案2】:

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

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

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于在 Eclipse 中使用 Play 框架 2.1.x 中的多个项目的主要内容,如果未能解决你的问题,请参考以下文章

带有 Play 框架的 Eclipse 类路径

在play框架中,无法编译文件XX.java。引发的错误是:无法在 Eclipse 中解析导入 XXX

Play 2.1 框架未检测到进化变化

在 jpa play 框架中按字段查找

播放框架2.1 Neo4j内嵌

在 Play 中查看 scala html 模板时出错