복붙노트

[SCALA] 어떻게 아이비 캐시 디렉토리를 구성하는 사용자 별 또는 시스템 전체?

SCALA

어떻게 아이비 캐시 디렉토리를 구성하는 사용자 별 또는 시스템 전체?

나는 스칼라 프로젝트를 구축하기위한 내 빌드 도구로 SBT를 사용하고 있습니다.

내 문제는 내 사용자 홈 디렉토리에 다운로드 종속성 SBT를 구성 할 수 없습니다. 그러므로 나는 다른 곳 아이비 캐시 디렉토리를 넣어 SBT를 알려줄 수있는 사용자 별 또는 더 나은 시스템 전체 설정을 찾고 있어요.

받는다는으로 로컬 저장소를 구성하는 데 사용할 수있는 사용자 별 Settings.XML이있다.

어떻게 아이비의 캐시의 위치를 ​​오버라이드 (override)하는 질문을 읽고? 그리고 대답을하지만 단지 프로젝트 단위의 설정을 구성하는 방법을 설명 보인다.

대안이없는 경우 나는 당 프로젝트 설정에 갈 것입니다,하지만 난 일에 대한 언급 질문에서 답을하지 않았다. 좀 더 자세한 내용은 어디 ivysettings.xml를 넣어하는 방법, 예를 들어 환영 할 것이다. 나는 프로젝트의 루트 디렉토리에 넣어 그것은 작동하지 않았다.

해결법

  1. ==============================

    1.당신은 단순히 당신의 SBT 시작 쉘 스크립트에 환경 변수를 추가 할 수 있습니다 :

    당신은 단순히 당신의 SBT 시작 쉘 스크립트에 환경 변수를 추가 할 수 있습니다 :

    java -Dsbt.ivy.home=/tmp/.ivy2/ ...
    

    공식 문서 라이브러리 관리를 참조하십시오.

  2. ==============================

    2.sbt.ivy.home 속성은 솔루션의 절반입니다. (가) 실행 다운로드 SBT 자체 (및 스칼라 컴파일러와 라이브러리 등과 같은 관련 종속) 요아킴 Hofer에 의해 언급 한 바와 같이,이 프로젝트에 의해 선언 된 종속성을 다운로드받을 위치에 영향을주지 않습니다 SBT 곳은 제어합니다.

    sbt.ivy.home 속성은 솔루션의 절반입니다. (가) 실행 다운로드 SBT 자체 (및 스칼라 컴파일러와 라이브러리 등과 같은 관련 종속) 요아킴 Hofer에 의해 언급 한 바와 같이,이 프로젝트에 의해 선언 된 종속성을 다운로드받을 위치에 영향을주지 않습니다 SBT 곳은 제어합니다.

    그 위치를 변경하려면, 당신은 ivy.home 속성을 설정해야합니다. 그래서, 요아킴 최초의 솔루션을 증가시키기 위해, 당신은 두 시스템 속성을 설정합니다 :

    java -Dsbt.ivy.home=/tmp/.ivy2/ -Divy.home=/tmp/.ivy2/ -jar `dirname $0`/sbt-launch.jar "$@"
    

    이 곳의 호텔을 가지고 있으며, 런처는 /tmp/.ivy2/ 디렉토리에 모두 프로젝트의와 SBT의 종속성을 다운로드합니다. 물론, 당신은 별도의 디렉토리에 넣어뿐만 아니라 수 있습니다.

  3. ==============================

    3.당신이 이미하지 않으면 당신은 SBT-엑스트라를 사용해야합니다.

    당신이 이미하지 않으면 당신은 SBT-엑스트라를 사용해야합니다.

    그런 다음, 당신이 그것을 통과 플래그는 단순히이다 :

    sbt -ivy /path/to/.ivy2
    
  4. ==============================

    4.다음과 같이 나는 일반적으로 빌드 파일로 나란히 ivy.xml과 ivysettings.xml 파일을 넣어 :

    다음과 같이 나는 일반적으로 빌드 파일로 나란히 ivy.xml과 ivysettings.xml 파일을 넣어 :

    build.xml
    ivy.xml
    ivysettings.xml
    

    아이비 작업 결심하고 두 파일을 찾을 수 있어야 검색 할 수 있습니다.

    예를 들면 :

    <target name="init" description="--> retrieve dependencies with ivy">
        <ivy:retrieve pattern="lib/[conf]/[artifact].[ext]"/>
    </target>
    

    홀수, 그것은 당신을 위해 작동하지 않는 것이다.

    당신은 몇 가지 방법에 받는다는 설정 파일을 에뮬레이트 할 수 있습니다

    1) 프로젝트 ivysettings.xml 내 지시어 포함

    <ivysettings>
        <include file="${user.home}/.ivy2/my-ivysettings.xml"/>
    </ivysettings>
    

    빌드 파일 2) 위치 설정

    <target name="init" description="--> retrieve dependencies with ivy">
        <ivy:settings file="${user.home}/.ivy2/my-ivysettings.xml" />
        <ivy:retrieve pattern="lib/[conf]/[artifact].[ext]"/>
    </target>
    

    3) 나는이 시도 적이하지만 난 당신이 ANT 속성을 사용하여 기본 위치를 대체 할 수 있다고 생각

    ant -Divy.settings.file=$HOME/.ivy2/my-ivysettings.xml
    
  5. ==============================

    5.아래 그림처럼 당신은 Path.userHome.absolutePath를 사용하여 홈 디렉토리를 검색 할 수 있습니다 :

    아래 그림처럼 당신은 Path.userHome.absolutePath를 사용하여 홈 디렉토리를 검색 할 수 있습니다 :

    resolvers += Resolver.file("Local", file( Path.userHome.absolutePath + "/.ivy2/local"))(Resolver.ivyStylePatterns)
    

    나는 아래 그림처럼 당신은 또한, 같은 방법으로 System.getenv 및 CONCATENATE를 사용하여 환경 변수를 검색 할 수 있다고 가정 :

    resolvers += Resolver.file("Local", file( System.getenv("IVY_HOME") + "/whatever/it/is"))(Resolver.ivyStylePatterns)
    
  6. ==============================

    6.SBT 부팅 자체 동안 캐시 위치를 편집 할 경우, 공식 문서에 SBT 실행기 구성을 참조하십시오.

    SBT 부팅 자체 동안 캐시 위치를 편집 할 경우, 공식 문서에 SBT 실행기 구성을 참조하십시오.

    기본적으로,이 시스템 전체의 작동하도록하기 위해, 당신은해야 할 것이다 :

    이 구성은 불행하게도하지만, 일반 SBT 사용에 이월하지 않는 것 같습니다.

  7. ==============================

    7.

    sbt -ivy /tmp/.ivy2 compile
    

    참조 : 남자 SBT

  8. from https://stackoverflow.com/questions/3142856/how-to-configure-ivy-cache-directory-per-user-or-system-wide by cc-by-sa and MIT license