【发布时间】:2015-11-18 03:23:35
【问题描述】:
我是 playframework 的新手,刚刚学习。我在依赖项、模块、插件和子项目之间有点困惑。它们有什么不同?
这是我的理解,我可能错了。
依赖项 - 是播放应用程序运行所需的所有库。 子项目 - 是另一个父应用程序中的播放应用程序。 不确定“插件”和“模块”。
有人可以解释一下它们的不同之处吗?
注意:我正在使用 Play 2.4 和 play-java,不确定定义是否会随着 play-scala 改变。
【问题讨论】:
我是 playframework 的新手,刚刚学习。我在依赖项、模块、插件和子项目之间有点困惑。它们有什么不同?
这是我的理解,我可能错了。
依赖项 - 是播放应用程序运行所需的所有库。 子项目 - 是另一个父应用程序中的播放应用程序。 不确定“插件”和“模块”。
有人可以解释一下它们的不同之处吗?
注意:我正在使用 Play 2.4 和 play-java,不确定定义是否会随着 play-scala 改变。
【问题讨论】:
您最初的解释非常正确。
依赖项确实是库,更严格地说,它们是通过存储库(最大的存储库称为Maven central)分发并由 SBT 下载的 jar 文件(包含 java 类的 zip 文件的花哨名称)。
最好将子项目视为直接嵌入到您的构建中的库。如果您运行publishLocal,您的子项目将被打包到一个jar 中并部署到您的本地存储库。如果您已将构建配置为发布到特定的公共(或私有)存储库,则当您运行 publish 时,jar 及其元数据将被推送到那里,其他项目可以在其依赖项中声明它。事实上,SBT 构建中的每个项目都属于这一类。您的游戏项目实际上是一个可以被其他东西依赖的库。
插件和模块是灰色的术语,在不同的上下文中表示不同的东西。
首先,有 sbt 插件,这些插件在您的 project/plugins.sbt 中声明,这些插件为您的构建添加了新行为,例如编译更少文件的能力。 Play 的开发模式部分由 sbt 插件实现。
但是 Play 运行时有插件。我们目前正在逐步淘汰这个术语,取而代之的是模块这个词,但它仍然有一些用处。
我们已经发布了一些关于这里的模块的文档:
https://www.playframework.com/documentation/2.4.x/Modules
所以一个模块和一个依赖可能是同一个东西,也可能不是,一个依赖可能提供许多模块,一个模块可能由许多传递依赖提供。
【讨论】: