我想配置Typesafe Activator及其捆绑工具,不使用我的用户主目录 - 我的意思是~/.activator
(配置?),~/.sbt
(sbt配置? ),尤其是~/.ivy2
,我想在我的两个操作系统之间分享。
Typesafe"文档"没什么帮助。
请为Windows和Linux提供帮助。
答案 0 :(得分:8)
来自sbt的官方文档中的Command Line Options:
sbt.global.base
- 包含全局设置和插件的目录(默认值:~/.sbt/0.13
)sbt.ivy.home
- 包含本地Ivy存储库和工件缓存的目录(默认值:~/.ivy2
)似乎~/.activator
已在启动脚本中设置并使用,并且我将更改该值。
sbt/sbt.boot.properties
中的activator-launch-1.2.1.jar
)也显示ivy-home
的值为${user.home}/.ivy2
:
[ivy]
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}
这意味着如果没有一些开发,只能改变sbt.global.base
。
➜ minimal-scala activator -Dsbt.global.base=./sbt -Dsbt.ivy.home=./ivy2 about
[info] Loading project definition from /Users/jacek/sandbox/sbt-launcher/minimal-scala/project
[info] Set current project to minimal-scala (in build file:/Users/jacek/sandbox/sbt-launcher/minimal-scala/)
[info] This is sbt 0.13.5
[info] The current project is {file:/Users/jacek/sandbox/sbt-launcher/minimal-scala/}minimal-scala 1.0
[info] The current project is built against Scala 2.11.1
[info] Available Plugins: sbt.plugins.IvyPlugin, sbt.plugins.JvmPlugin, sbt.plugins.CorePlugin, sbt.plugins.JUnitXmlReportPlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.10.4
如果您想深入了解,可以使用consoleProject
命令查询sbt和Ivy的主目录的当前值(假设您使用activator
启动了activator -Dsbt.global.base=./sbt -Dsbt.ivy.home=./ivy2
):
> consoleProject
[info] Starting scala interpreter...
[info]
import sbt._
import Keys._
import _root_.sbt.plugins.IvyPlugin
import _root_.sbt.plugins.JvmPlugin
import _root_.sbt.plugins.CorePlugin
import _root_.sbt.plugins.JUnitXmlReportPlugin
import currentState._
import extracted._
import cpHelpers._
Welcome to Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_60).
Type in expressions to have them evaluated.
Type :help for more information.
scala> appConfiguration.eval.provider.scalaProvider.launcher.bootDirectory
res0: java.io.File = /Users/jacek/sandbox/sbt-launcher/minimal-scala/sbt/boot
scala> appConfiguration.eval.provider.scalaProvider.launcher.ivyHome
res1: java.io.File = /Users/jacek/.ivy2
Iff 您真的要说服Activator使用sbt.ivy.home
,您必须更改sbt/sbt.boot.properties
中的activator-launch-1.2.2.jar
。只需按照以下步骤操作:
从sbt/sbt.boot.properties
解包activator-launch-1.2.2.jar
。
jar -xvf activator-launch-1.2.2.jar sbt/sbt.boot.properties
修改sbt/sbt.boot.properties
并替换ivy-home
下的[ivy]
。
ivy-home: ${sbt.ivy.home-${user.home}/.ivy2}
将更改后的sbt/sbt.boot.properties
添加到activator-launch-1.2.2.jar
。
jar -uvf activator-launch-1.2.2.jar sbt/sbt.boot.properties
通过更改,-Dsbt.ivy.home=./ivy2
可以正常工作。
scala> appConfiguration.eval.provider.scalaProvider.launcher.bootDirectory
res0: java.io.File = /Users/jacek/sandbox/sbt-launcher/minimal-scala/sbt/boot
scala> appConfiguration.eval.provider.scalaProvider.launcher.ivyHome
res1: java.io.File = /Users/jacek/sandbox/sbt-launcher/minimal-scala/ivy2
答案 1 :(得分:3)
我今天正在试验这个。过了一会儿,在我看来这可能是最好的事情:
<强>窗:强>
setx _JAVA_OPTIONS "-Duser.home=C:/my/preferred/home/"
<强> Linux的:强>
export _JAVA_OPTIONS='-Duser.home=/local/home/me'
然后,您应该选择任何想要在主目录中存储数据的Java程序。
答案 2 :(得分:1)
作为Jacek的答案的补充,另一种设置.ivy2
目录的方法是使用sbt ivyConfiguration
任务。它返回与常春藤相关的配置设置,包括常春藤主页的路径(默认为~/.ivy2
的路径)。
只需将这几行添加到项目中的build.sbt
文件中:
ivyConfiguration ~= { originalIvyConfiguration =>
val config = originalIvyConfiguration.asInstanceOf[InlineIvyConfiguration]
val ivyHome = file("./.ivy2")
val ivyPaths = new IvyPaths(config.paths.baseDirectory, Some(ivyHome))
new InlineIvyConfiguration(ivyPaths, config.resolvers, config.otherResolvers,
config.moduleConfigurations, config.localOnly, config.lock,
config.checksums, config.resolutionCacheDir, config.log)
}
它返回一个与原始配置相同的新常春藤配置,但是有正确的路径到常春藤主目录(这里是./.ivy2
,所以它将位于build.sbt
的旁边文件)。这样,当sbt使用ivyConfiguration
任务获取常春藤配置时,.ivy2
目录的路径将是上面设置的路径。
使用sbt 0.13.5
和0.13.8
对我有用。
注意:对于sbt版本0.13.6
及更高版本,InlineIvyConfiguration
的构造需要一个额外的参数,以避免被标记为已弃用,因此您可能希望更改最后一行:
new InlineIvyConfiguration(ivyPaths, config.resolvers, config.otherResolvers,
config.moduleConfigurations, config.localOnly, config.lock,
config.checksums, config.resolutionCacheDir, config.updateOptions, config.log)
(请注意额外的config.updateOptions
)
答案 3 :(得分:-1)
我在Mac上遇到同样的问题。我删除了名为.activator的用户主目录和所有相关文件夹中的目录。之后在终端上运行activator run命令。 Activator下载我删除的所有文件夹。比问题解决了。