2013-03-27 71 views
11

我有一个Eclipse中的现有项目(我们称之为“NotPlayProj”),它有很多java代码仍在开发中。我用play 2.1.0做了一个新的eclipse项目(我们称之为“PlayProj”)。我的目标是在PlayProj中使用来自NotPlayProj的代码,并且Eclipse和Play编译器都会注意到任一项目中的更改。在Eclipse中使用多个项目与Play框架2.1.x

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

有什么办法可以做到这一点,理想情况下不需要修改NotPlayProj?

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

+0

你读过这篇文章,也许它有帮助:http://stackoverflow.com/questions/10226919/reload-app-on-custom-file-change-in-playframework – adis 2013-03-29 21:22:19

+0

感谢您参考adis。这不是我所需要的,但是它在一般的场地。我想我需要从头开始学习。 – 2013-04-01 22:35:22

+0

这是你想要做什么http://stackoverflow.com/questions/10090829/how-to-reference-a-different-java-project-in-eclipse? – th3byrdm4n 2013-04-02 04:33:37

回答

2

您需要的是持续集成。

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

例: 你有你的PlayProj在某些服务器上运行,它需要能够使用一些最新的类从名为NoPlayProj其他项目。

重建是必须的,诸如宕机时间零等事情很难实现(至少我不认为这是你要求的)。 你需要与詹金斯自动化的步骤是:

1 - 构建和部署的NoPlayProj的最新版本,它位于一些repositorium

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

我希望这是有用的。

1

为了让Eclipse在使用PlayProj时看到NotPlayProj的变化,这足以改变PlayProj的配置。属性 - > Java构建路径 - >项目 - >将NotPlayProj添加为依赖项。

有没有简单的方法让Play编译器处理依赖关系,直到你将它打包为jar。考虑配置简单的ant任务(外部工具配置 - > Ant构建),它将复制你的jar文件。任务可以通过按下键或按钮来触发。

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

两种方法都需要一些努力。也许你可以看看运行Play的Python脚本,也许它足以在执行播放开始时用NotPlayProj扩展类路径