我使用Scala教授高中计算机科学,并且我设法 Build 了一个Artifactory仓库,这样当我的学生下载依赖项时,我们在实验室内进行大部分下载,而不是通过互联网 .
但是,我们所有的主文件夹都在网络驱动器上,而学生使用的终端没有自己的硬盘,因此拥有相同依赖项的数十个副本似乎很愚蠢 . 不幸的是,即使使用Artifactory repo,SBT / Ivy也会将所有工件复制到每个用户的〜/ .ivy2 / cache目录中 .
我听说过,如果我设置了共享文件系统repo,那么工件将不会被复制 . 我无法弄清楚的是如何以一种被识别为文件系统仓库的格式导出Artifactory为我缓存的所有工件 . (导出通常会将每个远程仓库放在一个单独的文件夹中,我想我必须以某种方式统一,但我不确定如何做到这一点 . 如果这是最简单的事情,请解释一下 . )
我认为我想要导出的是 remote-repos
虚拟存储库,但这在“导出”页面上不可用 .
另一个棘手的部分是同一个构建文件应该可以在家里使用,那里没有代理存储库,所以我依赖的事实是我可以使用 /etc/sbt/sbtopts
来覆盖实验室环境中的存储库解析 .
3 回答
改变常 Spring 藤回家
使用
${SBT_OPTS}
定义sbt
脚本:然后只在您的网络环境中设置
SBT_OPTS
为:学生可能需要写dir的权利 .
您还可以使用Linux上的
davfs2
或Windows上的"web folders"来简单地将Artifactory安装为WebDAV资源(只读) . 这避免了通过本地文件系统的任何间接,并使这样的副本保持最新 .非托管依赖项
一个能让你离开常 Spring 藤的解决方案怎么样?
在使用托管依赖项的原始构建中,运行
这应该显示如下内容:
创建一个名为
/shared/project1/lib
的目录,然后复制上面的所有jar,但scala-library.jar
除外 .接下来,制作构建的副本并将
libraryDependency
替换为以下内容:您仍然可以编译代码 .