使用Play 2.0应用程序进行依赖关系管理

时间:2012-02-23 22:10:33

标签: playframework-2.0

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

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

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

我们应该采用哪种最佳做法来使这项工作更顺利?

FWIW,我们正在使用IntelliJ 11.0(Ultimate)

============ EDIT ============

关于如何改进我的Maven构建过程,我得到了很好的答案,我确实很感激。但是,这不是我正在寻找的答案。

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

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

根据我对Play 2.0和SBT文档的阅读,我唯一真正的答案是让'Service'成为'App'的子项目。对此有更好的答案吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您有2个选项。

Rich提到的第一个是本地存储库。这并不意味着您的dev机器中的本地文件夹maven创建为本地缓存而您正在使用。它表示LAN中的中央服务器,您可以在其中存储Play的应用程序版本,以便稍后检索。根据Rich的推荐,Nexus是一个不错的选择。

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

我推荐第一种方法,长期更好,但这是你的选择。

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

答案 2 :(得分:0)

在大多数情况下,Play确实很有趣。但是,有一种情况是,Play可能不是最好的解决方案,正是您指出的问题:当有其他组件时,图书馆将集成到应用程序中。

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