我们的小组对基于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'的子项目。对此有更好的答案吗?
答案 0 :(得分:1)
您应该推送到本地Maven镜像/代理,例如Nexus。
答案 1 :(得分:1)
您有2个选项。
Rich提到的第一个是本地存储库。这并不意味着您的dev机器中的本地文件夹maven创建为本地缓存而您正在使用。它表示LAN中的中央服务器,您可以在其中存储Play的应用程序版本,以便稍后检索。根据Rich的推荐,Nexus是一个不错的选择。
第二个选项是简单地构建您的jar并将它们部署为“lib”文件夹中的非托管库。然后,您可以将其提交到源管理系统,并且所有开发人员都具有相同的权限。
我推荐第一种方法,长期更好,但这是你的选择。
编辑评论 你说你不想管理依赖项。我能想象的唯一第三种情况是你希望将所有代码都作为一个块。在这种情况下,您可以使用subprojects。我没有看到其他选择。
答案 2 :(得分:0)
在大多数情况下,Play确实很有趣。但是,有一种情况是,Play可能不是最好的解决方案,正是您指出的问题:当有其他组件时,图书馆将集成到应用程序中。
我不是说这是不可能的,它根本不是Play的构思方式。