博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
修改SBT默认缓存路径
阅读量:6157 次
发布时间:2019-06-21

本文共 1410 字,大约阅读时间需要 4 分钟。

hot3.png

首先,SBT有个工作目录(默认位于${user.home}/.sbt)

然后,SBT是利用Apache Ivy来管理依赖的,于是又有一个ivy缓存目录(默认位于${user.home}/.ivy2)

这两个目录默认位于C盘,像我这么喜欢重装系统的人,最讨厌把东西放在C盘了,所以要想办法修改这两个目录的定位。

方法很简单,比如我们要将上述目录移动到D:\Tools\sbt,只需在环境变量中添加一个变量SBT_OPTS,值为

-Dsbt.global.base=D:\Tools\sbt\.sbt -Dsbt.ivy.home=D:\Tools\sbt\.ivy2
然后重新运行sbt(如果是通过shift+鼠标右键打开的控制台,那还需要重启下系统确保环境变量起作用)

=================设置方法很简单,以下是分析的过程

我用了很长时间,在sbt-launch.jar中的sbt目录下找到了sbt.boot.properties文件,文件中有如下内容:

[boot] directory: ${sbt.boot.directory-${sbt.global.base-${user.home}/.sbt}/boot/}[ivy]  ivy-home: ${sbt.ivy.home-${user.home}/.ivy2/}  checksums: ${sbt.checksums-sha1,md5}  override-build-repos: ${sbt.override.build.repos-false}  repository-config: ${sbt.repository.config-${sbt.global.base-${user.home}/.sbt}/repositories}

其中包含了很奇怪的${}语法,不过细细看来也是能够理解的,“-”左边就是访问property语法,“-”右边则指定一个默认值或另一个表达式。

例如这句话${sbt.ivy.home-${user.home}/.ivy2/}相当于

// 伪码ivy-home =	if exists("sbt.ivy.home")		get("sbt.ivy.home")	else		if exists("user.home")			get("user.home") + "/.ivy2/"
通过分析这个文件可以发现,只需要想办法修改sbt.global.base和sbt.ivy.home变量即可。一种方式是直接把路径写入这个文件,然后压缩进jar即可。但这种方式显然是不可取的。另一种方式,自然是通过VM Options传入。

接下来就要从sbt.bat入手。bat文件中一大堆脚本,也不太看得懂,不过java启动命令还是很清楚的

"%_JAVACMD%" %_JAVA_OPTS% %SBT_OPTS% -cp "%SBT_HOME%jansi.jar;%SBT_HOME%sbt-launch.jar;%SBT_HOME%classes" SbtJansiLaunch %*

其中%SBT_OPTS%在脚本的其他地方并没有用到,同时变量名也指明了它是用于配置SBT属性的,于是就有了上述方法的尝试,居然还成功了。

转载于:https://my.oschina.net/u/580483/blog/110499

你可能感兴趣的文章
关于textarea的ie9的maxlength不起作用的问题,请参考如下URL解决。
查看>>
Solr Facet 查询
查看>>
C++类的继承一
查看>>
数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案...
查看>>
巧用VMware Workstation的clone来制作虚拟机模板
查看>>
Spring-Mybatis MapperScannerConfigurer 取不到PropertyPlaceholderConfigurer里的值
查看>>
HP DL380G4服务器前面板指示灯的含义
查看>>
数据结构_树结构
查看>>
常用URL地址
查看>>
每天一个linux命令(19):find 命令概览
查看>>
MySQL kill操作
查看>>
windows下看端口占用
查看>>
Decommissioning a Domain Controller 降域控
查看>>
Character中的奇葩
查看>>
c++书籍推荐
查看>>
互联网通用架构技术----缓存雪崩
查看>>
Dell R710服务器磁盘恢复数据库一例(记录)
查看>>
我的友情链接
查看>>
Ionic3 通讯录索引的实现
查看>>
轻松监听Azure service health 状态
查看>>