2014-06-13 1 views
9

Typesafe Activator를 구성하고 내 사용자 홈 디렉토리를 사용하지 않도록 번들 된 도구를 사용하고 싶습니다. ~/.activator (구성?), ~/.sbt (sbt 구성?) 및 특히 ~/.ivy2을 공유하고 싶습니다. OSes. 형식이 안전한 "문서"는 거의 도움이되지 않습니다.Typesafe Activator가 사용자 홈을 사용하지 않도록 구성하는 방법은 무엇입니까?

Windows 및 Linux 모두에게 도움이 필요합니다.

SBT의 공식 문서에서 Command Line Options에서
+0

지금까지 나는 (Windows에서 activator.bat) 시작 스크립트를 발굴하려했지만''''CFG_FILE_HOME'''과'''CFG_FILE_VERSION'''에 대해서만'''UserProfile %''를 참조하고, 변경은'''.activator'' 디렉토리가 만들어지는 곳에는 영향을 미치지 않습니다. – enlait

답변

8

:

  • sbt.global.base - 디렉토리 전역 설정 및 플러그인을 포함 (기본값 : ~/.sbt/0.13)
  • sbt.ivy.home - 아이비 저장소와 유물 캐시 지역을 포함하는 디렉토리 (기본 : ~/.ivy2)

~/.activator은 시작 스크립트 및 그것이 내가 가치를 바꿀 곳입니다.

[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을 변경 만 가능합니다 것을 의미 :

는 또한 ivy-home의 값이 ${user.home}/.ivy2입니다 (activator-launch-1.2.1.jar에서 sbt/sbt.boot.properties에서)가 나타납니다.

> 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 
: 당신이 후드를보고 싶다면, 당신은 consoleProject 명령 (당신이 activator -Dsbt.global.base=./sbt -Dsbt.ivy.home=./ivy2activator을 시작 가정)와 SBT와 아이비의 홈 디렉토리의 현재 값에 대한

➜ 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 

조회 수

Iff Activator가 sbt.ivy.home을 사용하도록 설득하려면 sbt/sbt.boot.propertiesactivator-launch-1.2.2.jar으로 변경해야합니다. 그냥 단계를 수행하십시오

  1. 의 포장을 풀고 sbt/sbt.boot.propertiesactivator-launch-1.2.2.jar 중.

    jar -xvf activator-launch-1.2.2.jar sbt/sbt.boot.properties 
    
  2. 편집 sbt/sbt.boot.properties[ivy]에서 ivy-home를 교체합니다.

    ivy-home: ${sbt.ivy.home-${user.home}/.ivy2} 
    
  3. activator-launch-1.2.2.jarsbt/sbt.boot.properties을 변경 추가. 변화와

    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 
+0

네, 효과가있었습니다. ''~/.activator/activatorconfig.txt''' 옵션에'''-D ...''옵션을 사용합니다 - 경로가 다르므로,이 옵션은 각 OS마다 다릅니다. 철저한 설명에 감사드립니다. – enlait

+0

BTW 본인은 당시이 문제를보고했지만 여기에 첨부하는 것을 잊었습니다. 여전히 열려있는 것 같습니다 https://github.com/typesafehub/activator/issues/585 – enlait

3

오늘 저는 이것을 실험하고있었습니다.

윈도우 :

setx _JAVA_OPTIONS "-Duser.home=C:/my/preferred/home/" 

리눅스 :

export _JAVA_OPTIONS='-Duser.home=/local/home/me' 

이 그럼 당신은 좋은해야 잠시 후, 그것은 나에게 보이는 것은이 할 수있는 최선의 일이 될 수 있었던 것처럼 홈 디렉토리에 데이터를 저장하려는 Java 프로그램으로 이동하십시오.

+0

다음과 같지 않아야합니다 : 'export _JAVA_OPTIONS ='- Duser.home =/local/home/me''? – 030

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 디렉토리의 경로가 위에 설정된 경로가됩니다.

그것은 나를 위해 일한 0.13.50.13.8을 사용했습니다.

new InlineIvyConfiguration(ivyPaths, config.resolvers, config.otherResolvers, 
    config.moduleConfigurations, config.localOnly, config.lock, 
    config.checksums, config.resolutionCacheDir, config.updateOptions, config.log) 

(: 0.13.6 이상에서, InlineIvyConfiguration의 건설은 더 이상 사용되지대로에 마지막 줄을 변경할 수 있도록 플래그되지 않도록하기 위해 추가 매개 변수를 필요로 SBT 버전의 : 참고

추가 config.updateOptions을 메모하십시오)

-1

Mac에서 같은 문제가있었습니다. 나는 사용자 홈 디렉토리에서 .activator라는 이름의 디렉토리와 관련된 모든 폴더를 지웠다. 그 후에 activator를 터미널에서 실행하십시오. Activator는 내가 삭제 한 폴더를 모두 다운로드합니다. 문제가 해결되었다.

+0

이 질문에 대한 대답은 아닙니다. 파일을 삭제하거나 복원하는 방법이 아닌 파일을 다른 곳에 둘 수 있는지 여부입니다. – Jaap

관련 문제