如何在Play 2.3中更改.activator .sbt .ivy文件夹的位置?

Jay*_*Jay 8 sbt playframework typesafe-activator playframework-2.3

我刚开始学习Play Framework 2.3.0并试图移动

  • .activator
  • .sbt
  • .ivy

文件夹中的%USERPROFILE%文件夹到C:/learning/playframework/我的Windows 7计算机上的自定义文件夹.我希望它们在重新安装操作系统时可移植/不丢失.

我修改了sbt.boot.properties并更改user.home为自定义位置并作为参数传递play.homeactivator.bat.

虽然.sbt.ivy文件夹中的自定义文件夹是最初创建,当我尝试创建一个新的应用程序HelloWorld所有这些文件夹重新获得在用户目录中创建%USERPROFILE%和所有的文件下载那里.将.activator永远不会在自定义文件夹中创建,并始终在中创建%USERPROFILE%的文件夹.

我也确保路径上没有空格.

sbt.boot.properties:

[app]
  org: com.typesafe.activator
  name: activator-launcher
  version: ${activator.version-read(activator.version)[1.2.1]}
  class: activator.ActivatorLauncher
  cross-versioned: false
  components: xsbti

[repositories]
  local
  activator-local: file://${activator.local.repository-${activator.home-${play.home}/.activator}/repository}, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
  maven-central
  typesafe-releases: http://repo.typesafe.com/typesafe/releases
  typesafe-ivy-releasez: http://repo.typesafe.com/typesafe/ivy-releases, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]

[boot]
 directory: ${sbt.boot.directory-${sbt.global.base-${play.home}/.sbt}/boot/}
 properties: ${activator.boot.properties-${play.home}/.activator/version-${activator.launcher.generation-0}.properties}

[ivy]
  ivy-home: ${play.home}/.ivy2
  checksums: ${sbt.checksums-sha1,md5}
  override-build-repos: ${sbt.override.build.repos-false}
  repository-config: ${sbt.repository.config-${sbt.global.base-${play.home}/.sbt}/repositories}
Run Code Online (Sandbox Code Playgroud)

请告知配置Activator/Play Framework,例如,3个目录和存储库是在自定义目录中创建的C:/learning/playframework/.

Jac*_*ski 5

永远不会在自定义文件夹中创建.activator,并始终在%USERPROFILE%文件夹中创建.activator.

我的理解是~/.activator由启动脚本控制,您应该能够指向自定义目录.

因为~/.sbt我应该使用sbt.global.base属性,因为我看到它在sbt代码本身中使用.

如果你想在引擎盖下看,可以查询主目录为SBT和常春藤与当前值consoleProject命令(它假设你开始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
Run Code Online (Sandbox Code Playgroud)

当且仅当你真正进入说服力激活使用sbt.ivy.home,你必须改变sbt/sbt.boot.propertiesactivator-launch-1.2.2.jar.请按照以下步骤操作:

  1. 解压缩sbt/sbt.boot.properties出来的activator-launch-1.2.2.jar.

    jar -xvf activator-launch-1.2.2.jar sbt/sbt.boot.properties
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编辑sbt/sbt.boot.properties并替换ivy-home[ivy].

    ivy-home: ${sbt.ivy.home-${user.home}/.ivy2}
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将更改添加sbt/sbt.boot.propertiesactivator-launch-1.2.2.jar.

    jar -uvf activator-launch-1.2.2.jar sbt/sbt.boot.properties
    
    Run Code Online (Sandbox Code Playgroud)

随着变化,-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
Run Code Online (Sandbox Code Playgroud)