【问题标题】:What is the difference between plugins, dependencies, modules and sub-projects in play 2.4?play 2.4 中的插件、依赖项、模块和子项目有什么区别?
【发布时间】:2015-11-18 03:23:35
【问题描述】:

我是 playframework 的新手,刚刚学习。我在依赖项、模块、插件和子项目之间有点困惑。它们有什么不同?

这是我的理解,我可能错了。

依赖项 - 是播放应用程序运行所需的所有库。 子项目 - 是另一个父应用程序中的播放应用程序。 不确定“插件”和“模块”。

有人可以解释一下它们的不同之处吗?

注意:我正在使用 Play 2.4 和 play-java,不确定定义是否会随着 play-scala 改变。

【问题讨论】:

    标签: playframework-2.0


    【解决方案1】:

    您最初的解释非常正确。

    依赖项确实是库,更严格地说,它们是通过存储库(最大的存储库称为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

    所以一个模块和一个依赖可能是同一个东西,也可能不是,一个依赖可能提供许多模块,一个模块可能由许多传递依赖提供。

    【讨论】:

    • 谢谢!那很有帮助。我对模块不是很清楚,但我希望在查看您提到的文档后我能有更好的理解。
    • 与其描述什么是模块,不如简单地陈述一些模块的例子。如果你想连接到 MongoDB,你可以使用 mongodb 模块。您可以使用像 deadbolt 这样的模块在 Play 中进行身份验证/授权。在内部,Play 提供了一个名为 WS 的 HTTP 客户端,这也是一个模块,您可以使用它。在你的代码实践中,你通常不会看到模块这个词,你只是根据文档使用 mongodb 客户端/身份验证框架/WS API。
    猜你喜欢
    • 2016-12-19
    • 1970-01-01
    • 2014-12-09
    • 2012-06-30
    • 2019-09-18
    • 2020-08-31
    • 2015-11-11
    • 1970-01-01
    • 2015-11-13
    相关资源
    最近更新 更多