【问题标题】:how to create a scala sbt project model which represents a model to other sbt projects?如何创建一个代表其他 sbt 项目模型的 scala sbt 项目模型?
【发布时间】:2020-05-29 11:05:04
【问题描述】:

我有一个 scala js sbt 项目,我在这个项目中开发了新的用户界面组件。

人 p1 有一个具有相同结构的项目(相同的 build.properties 和 plugins.sbt),他如何访问我的用户界面组件。

我应该在 build.sbt 中添加一些规范吗?

【问题讨论】:

  • 为什么要为此使用构建工具?你有 git!让p1创建一个分支,push它,p2可以查看它,挑选,合并到她/他自己的分支中。
  • 关于共享库的更多信息,我应该在 build .sbt 中添加一些内容吗?
  • 分享是什么意思?如果代码在项目中,则它是共享的。如果您将libraryDependency 添加到构建中并为您编译,它将为其他所有人编译。

标签: scala sbt scalajs-react


【解决方案1】:

如果你想共享一些项目设置,你可以创建一个 sbt 插件——它可以让你有一些通用设置,添加对其他 sbt 插件的依赖,甚至覆盖它们的配置。例如,请参阅 sbt-softwaremill 作为插件示例,该插件用于在项目之间共享一些公共资源。

它不会神奇地更新所有配置,因为:

  • build.properties 在运行 sbt 代码之前进行评估
  • 你必须将此插件添加到plugins.sbt
  • 您必须在每个项目中创建项目结构

理论上,任何更多的配置共享都是可能的,例如使用 git 子模块并将符号链接提交到 repo,但这将是非常错误的 - 对一个项目的任何更改都会导致另一个项目的更改,并且您将它们分开是有原因的 - 如果两个项目相同,您将拥有一个项目首先。

如果您需要共享代码本身,您可以构建代码,将其发布到工件并在另一个项目中添加依赖项。

但这只有在你真的有两个项目的情况下,你完全有可能只需要一个具有不同分支的 git 项目,开发人员会在他们自己的分支上工作,然后将更改合并到公共分支,因为那是使用 git 的要点。

【讨论】:

  • 在构建中。 sbt 我应该添加 sbtPlugin := true 并且对于其他项目只需添加 project/plugins.sbt addSbtPlugin("....")。其他项目应该在同一个存储库中?
  • sbt 1.x 的插件开发需要 Scala 2.12,sbtPlugin := true。最佳实践在文档上:scala-sbt.org/1.x/docs/Plugins-Best-Practices.html。一旦您构建并部署插件到工件,它就可以在项目中使用(如果您没有工件,那么需要使用它的每个人都必须在本地构建和发布它)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
  • 2014-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多