5

我们小组对基于 JVM 的开发有些陌生。我们正在开发由许多其他库组成的应用程序。

我们发现 Play 框架对于开发 Web 应用程序非常有吸引力。框架很棒,但是我们本地开发的库的依赖管理有点令人烦恼。我们使用的是 Play 2.0 的 RC2,虽然我们能够将库中的更改加载到 Play 中,但这绝对是一个尴尬的过程,会中断通常流畅的 Play 过程。

我们正在做的是将我们的库推送到我们的本地(在每个开发人员的机器上)Maven 存储库,然后将这些相同的库导入回 Play 项目。它有效,但正如我所说,这很尴尬。

我们应该采用哪些最佳实践来使这项工作更顺利一些?

FWIW,我们正在使用 IntelliJ 11.0(终极版)

============编辑=============

关于如何改进我的 Maven 构建过程,我得到了很好的答案,我对此表示感谢。但是,这并不是我正在寻找的答案。

具体来说,假设我正在构建一个服务和一个 Web 应用程序来监视/管理服务。Service 是一个普通的 Java/Scala 项目,而 Web App 是一个 Play!项目。我们将这些称为“服务”和“应用程序”。(请不要对这个提议的结构挑剔,为了问题的目的我正在简化它)

在 Eclipse 或 IntelliJ 中,我可以添加“服务”模块(或 Eclipse 项目)作为“应用程序”项目的依赖项。这允许开发人员在“服务”库中进行更改时非常快速地周转(例如,我将属性添加到模型)。重新编译和运行比编译、打包、部署、导入和重新加载浏览器快几个数量级。

根据我对 Play 2.0 和 SBT 文档的阅读,我唯一真正的答案是让“服务”成为“应用”的子项目。有更好的答案吗?

4

3 回答 3

1

您也许应该推送到本地 Maven 镜像/代理,例如Nexus

于 2012-02-24T11:34:28.647 回答
1

您有 2 个选项。

正如 Rich 提到的,第一个是本地存储库。这并不意味着 Maven 创建为本地缓存并且您正在使用的开发机器中的本地文件夹。这意味着您 LAN中的中央服务器,您可以在其中存储应用程序的版本以供 Play 稍后检索。Rich 推荐的Nexus是一个不错的选择。

第二种选择是简单地构建您的 jar 并将它们部署为“lib”文件夹中的非托管库。然后,您可以将其提交到您的源代码管理系统,所有开发人员都将拥有相同的内容。

我推荐第一种方法,从长远来看要好得多,但这是您的选择。

编辑评论 你说你不想管理依赖关系。我能想象的唯一第三种情况是您希望将所有代码作为一个块。在这种情况下,您可以使用subprojects。我没有看到其他选择。

于 2012-02-24T15:08:52.050 回答
0

在大多数情况下,玩确实具有极大的兴趣。但是,在一种情况下,Play 可能不是最佳解决方案,正是您指出的问题:当还有其他组件时,需要将库集成到应用程序中。

我并不是说这是不可能的,这根本不是 Play 的构思方式。

于 2012-02-24T10:41:42.973 回答