8

我刚刚开始学习 Play Framework 2.3.0 并正在尝试移动

  • .activator
  • .sbt
  • .ivy

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

我修改了sbt.boot.properties并将其更改user.home为自定义位置并作为参数传递play.home给。activator.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}

请就配置 Activator/Play 框架提出建议,这样 - 在自定义目录中创建 3 个目录和存储库,例如C:/learning/playframework/.

4

2 回答 2

5

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

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

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

如果您想深入了解,可以使用consoleProject命令查询 sbt 和 Ivy 的主目录的当前值(假设您从 开始activatoractivator -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

如果您真的想说服 Activator 使用sbt.ivy.home必须更改sbt/sbt.boot.properties. activator-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
    
  2. 下编辑sbt/sbt.boot.properties和替换。ivy-home[ivy]

    ivy-home: ${sbt.ivy.home-${user.home}/.ivy2}
    
  3. 将更改添加sbt/sbt.boot.propertiesactivator-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
于 2014-06-14T00:53:31.103 回答
2

只需添加一个activatorconfig.txt文件%USERPROFILE%/.activator/ 在此文件中,放置以下内容:

-Dactivator.local.repository=C:\learning\playframework\repository
-Dactivator.home=C:\learning\playframework\
-Dsbt.ivy.home=C:\learning\playframework\repository
-Duser.home=C:\learning\playframework\
-Divy-home=C:\learning\playframework\repository
于 2015-02-26T01:59:15.783 回答