我们发现Play框架对于开发Web应用程序非常有吸引力.框架很棒,但我们本地开发的库的依赖管理有些令人烦恼.我们正在使用Play 2.0的RC2,虽然我们能够对加载到Play中的库进行更改,但这绝对是一个尴尬的过程,会中断正常流畅的Play过程.
我们正在做的是将我们的库推送到我们的本地(在每个开发人员的机器上)Maven存储库,然后将这些相同的库导回到Play项目中.它有效,但正如我所说,它很尴尬.
我们应该采用哪种最佳实践来使这项工作更顺利?
FWIW,我们正在使用IntelliJ 11.0(旗舰版)
============ ============编辑
关于如何改进我的Maven构建过程,我得到了很好的答案,我确实很感激.但是,这不是我正在寻找的答案.
为了使这个具体,假设我正在构建服务和Web应用程序来监视/管理服务.该服务是一个普通的Java / Scala项目,Web App是一个Play!项目.我们称之为“服务”和“应用”. (请不要挑剔这个提议的结构,我为了问题的目的简化它)
在Eclipse或IntelliJ中,我可以添加’Service’模块(或Project for Eclipse)作为’App’项目的依赖项.这允许在“服务”库中进行更改时非常快的开发人员周转时间(例如,我向模型添加属性).重新编译和运行比编译,打包,部署,导入和重新加载浏览器快几个数量级.
根据我对Play 2.0和SBT文档的阅读,我唯一真正的答案是让“服务”成为“App”的子项目.这有更好的答案吗?
你有2个选择.Rich提到的第一个是本地存储库.这并不意味着您的dev机器中的本地文件夹maven创建为本地缓存而您正在使用.它表示LAN中的中央服务器,您可以在其中存储Play的应用程序版本,以便稍后检索.根据Rich的推荐,Nexus是一个很好的选择.
第二个选项是简单地构建您的jar并将它们部署为“lib”文件夹中的非托管库.然后,您可以将其提交到源管理系统,并且所有开发人员都具有相同的权限.
我推荐第一种方法,长期更好,但这是你的选择.
编辑评论
你说你不想管理依赖项.我能想象的唯一第三种情况是你希望将所有代码都作为一个块.在这种情况下,你可以使用subprojects.我没有看到其他选择.