我可以使用本地模板(不是 GitHub)运行 sbt new 吗?

Sal*_*ley 5 scala sbt giter8

我在一个安全的环境中工作,不允许开发人员从 GitHub 或任何其他外部存储库进行 git-clone。

我能够从 GitHub 下载 g8 模板 (play-scala-seed) 作为 zip 文件,并将其解压缩到本地文件夹。我可以使用该本地目录而不是 git repo 吗?

我第一次尝试失败:

> dir .\play-scala-seed
 Volume in drive C is OSDisk
 Volume Serial Number is A074-A016

 Directory of C:\workspace\play-scala-seed

03/22/2018  11:03 AM    <DIR>          .
03/22/2018  11:03 AM    <DIR>          ..
03/22/2018  11:01 AM    <DIR>          project
03/22/2018  10:57 AM    <DIR>          src
03/22/2018  11:03 AM    <DIR>          target
03/22/2018  10:57 AM                70 .gitignore
03/22/2018  10:57 AM               509 .travis.yml
03/22/2018  10:57 AM               453 build.sbt
03/22/2018  10:57 AM               439 LICENSE
03/22/2018  10:57 AM             1,166 README.md
               5 File(s)          2,637 bytes
               5 Dir(s)  220,172,980,224 bytes free
Run Code Online (Sandbox Code Playgroud)

尽管我确定模板存在并且位于名为“play-scala-seed”的目录中,但 SBT 新命令不接受它:

> sbt new .\play-scala-seed
Template not found for: .\play-scala-seed
Run Code Online (Sandbox Code Playgroud)

那么如何让 sbt new 使用本地目录作为 g8 模板呢?

我正在运行 Windows(如果这很重要!)

lau*_*lic 8

当您直接使用 gter8 时,您只需要使用file://前缀引用您的本地模板:

g8 file://play-scala-seed
Run Code Online (Sandbox Code Playgroud)

正如@volia17 所提到的,您可以在giter8 文档中找到它:在本地测试模板

但是当您使用 时sbt new,您需要模板名称(文件夹)以.g8. sbt 可以接受不同类型的模板,这样它就知道这是一个 gter8 模板。因此,您可以将模板文件夹重命名为play-scala-seed.g8

sbt new file://play-scala-seed.g8
Run Code Online (Sandbox Code Playgroud)

PS直接使用giter8要快得多,因为sbt new启动需要时间(它每次都加载全局sbt插件)。