2012-02-23 38 views
5

我们的团队对于基于JVM的开发有点新。我们正在开发由许多其他库组成的应用程序。使用Play 2.0应用程序进行依赖管理

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

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

我们应该采用什么样的最佳实践来让这项工作更顺利?

FWIW,我们使用的IntelliJ 11.0(旗舰版)

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

我如何改进我的Maven构建过程,我会得到很好的答案,我很欣赏这一点。但是,这不是我正在寻找的答案。

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

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

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

回答

1

您有2个选项。

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

第二个选项是简单地构建您的罐子并将它们作为非托管库部署在您的“库”文件夹中。然后你可以将它提交给你的源代码管理系统,并且所有的开发者都会拥有相同的代码。

我推荐第一种方法,长期好得多,但这是您的选择。

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

+0

我很欣赏你在说什么,但是你仍然在努力改进一个我正试图消除的过程。我要编辑这个问题来澄清这一点。 – 2012-02-24 15:47:35

+0

@AndyDavis见更新 – 2012-02-24 16:06:26

+0

再次感谢您的意见。如果你能看看我的例子,看看子项目是否可行,我将不胜感激。 – 2012-02-24 16:13:42

0

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

我并不是说这是不可能的,它根本不是Play被设想的方式。

+0

抱歉,这是FUD。 Play 2.0使用sbt来管理依赖关系,maven,sbt或ivy之间的区别几乎为零。那么,所有使用它们的项目都是错误的吗? :) – 2012-02-24 15:10:25

+0

我可能没有足够的Play2游戏体验,但它确实是Play 1.x的例子。 – 2012-02-24 15:13:32

1

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

+0

我已经有一个本地存储库。我并不想改善这一点,因为我期望绕过它(至少对于开发而言) – 2012-02-24 14:06:38