2012-07-25 1 views
14

저는 혼합 빌드 환경에서 저의 첫 플레이 앱을 설정하고 있습니다. 우리 회사는 모든 것을 위해 maven을 사용하고 (지금까지는) 내 유물이 나머지 유물과 훌륭하게 상호 작용하도록 노력하고 있습니다.Play 2.0 및 SNAPSHOT 종속성

maven과 비슷한 방식으로 SNAPSHOT을 다루기 위해 ivy/sbt/play를 얻을 수있는 방법이 있습니까? 즉, 항상 원격 저장소 (예 : 빌드 작업자)에서 업데이트하거나 로컬을 사용하십시오. 의존성이 '만료 될'때까지 m2 리포지토리에 저장 한 다음 서버에서 새로 고칩니다.

Build.scala에서 유물에 대한 SNAPSHOT 종속성을 선언했으며이 종속성에 대한 로컬 업데이트를 내 게임 프로젝트에 표시하고 싶습니다. 받는다는 측면에서, 나는 (물론) 구축하고 (~/.m2/저장소에서) 내 로컬 메이븐 저장소에 내 외부 아티팩트를 설치하는 다음

mvn clean install 

을한다. 이러한 변경 사항을 내 게임 프로젝트에서 즉시 볼 수있게하고 싶지만 SNAPSHOT을 캐시하지 않도록 sbt/play에 알려주는 방법을 알아낼 수 없습니다. 내가하는 일에 상관없이,이 의존성은 결코 재생산되지 않습니다 - 나는 실제 플레이 담쟁이 캐시에 들어가야하고, 변경 사항을 수작업으로 삭제해야합니다. 이상적으로, 나는 sbt/ivy가 내 로컬 메이븐 레포에 대한 경로를 해결하고 내부적으로 캐시하지 않기를 바란다. 내가 플레이 빌드를 실행하면 내가 제대로이 REPO를 사용하지만, 다음 담쟁이 캐시의 결과를 캐시, 내 Build.scala

val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
    resolvers += "Local Maven Repository" at "file://" + Path.userHome.absolutePath + "/.m2/repository", 
    testOptions in Test := Nil 
) 

에 다음을 가지고있다. Ivy/sbt에게이 일을하지 말라고 말할 수있는 주문이 있습니까? ivysettings.xml에서 아마도 뭔가요?

+0

시도해 보았습니까? –

+0

http://stackoverflow.com/questions/8224907/re-download-a-snapshot-version-of-a-dependency-using-sbt가 도움이됩니까? –

+1

예 - 제가 생각할 수있는 모든 조합을 시도했습니다. 바닐라 플레이 2.0 설치 스냅 샷 스냅 샷을 수동으로 삭제해야합니다. sbt 0.11을 사용하면 (설치되지 않은 상태에서도) 동일한 결과가 나타납니다. 또한 최신 Play 2.1 SNAPSHOT에서 sbt 0.12를 사용하면이 사실도 확인할 수 있습니다. 내가하는 일과 관계없이 SNAPSHOT은 ~/.ivy2/cache에 캐싱되며 sbt/play 주문의 방식으로 인해 sbt/play가 아이비 캐시에서이 SNAPSHOT을 업데이트 할 수 없습니다. – dpratt

답변

1

당신은 사용할 수 있습니다

  • play reload // 응용 프로그램을 구축하기 전에 현재 응용 프로그램 빌드 파일을
  • play update // 업데이트 응용 프로그램 종속성

를 다시로드하십시오. SNAPSHOT 종속성을 캐시하지 않도록 sbt를 구성 할 수 있는지 여부는 모르겠지만 빌드 프로세스를 스크립팅하여 강제로 종속성을 다시로드 할 수는 있습니다.

5

@kheraud -> 청소/다시로드/업데이트 -> 및 localY를 캐시 SBT 작동하지 않습니다 및 지역 받는다는 새로운 스냅 샷을 다시

@dprat 확인하지 않습니다 -> 내가 웹에서 해결책을 찾고있다가 내가 포기 :(아무것도 더 못 찾았어요 - 단지 담쟁이 캐시에 해당 지역의 패키지를 삭제하고 play update 당신은 그것을 단순화하고

rm -rf ~/.ivy2/cache/your.package.foo 
play update compile 
2

가 다른 곳에서 내가이 관찰 작용을 본 적이 스크립트를 만들 수 있습니다 않습니다 SBT 결함 https://groups.google.com/forum/?fromgroups=#!topic/play-framework/O7_cAdUWQII

한 가지 해결책은 Nexus를 사용하는 것입니다. Maven에서 Nexus로 배포해야합니다. mvn 대신 넥서스 경로를 사용해야합니다. nexus를 설치하고 실행해야합니다!

nexus를 설치하려면 sonatype으로 이동하여 다운로드하십시오. 파일 사용 권한을 확인 (지침을 읽으십시오)하지만 간단합니다. ~/.m2/settings.xml에 자격 증명을 입력해야합니다. 기본값은 admin, admin123입니다.

<settings> 
    <servers> 
    <server> 
     <id>snapshots</id> 
     <username>admin</username> 
     <password>admin123</password> 
    </server> 
    </servers> 
</settings> 

maven 배포는 nexus에 의해 제공됩니다.:

<distributionManagement> 
    <repository> 
     <id>releases</id> 
     <url>http://0.0.0.0:8081/nexus/content/repositories/releases</url> 
    </repository> 
    <snapshotRepository> 
     <id>snapshots</id> 
     <url>http://0.0.0.0:8081/nexus/content/repositories/snapshots</url> 
    </snapshotRepository> 
</distributionManagement> 

그러면 mvn deploy이 귀하의 자원을 거기에 넣습니다.

그리고 재생 SBT 사용

resolvers += "Local Nexus Repository" at "http://0.0.0.0:8081/nexus/content/repositories/snapshots" 

에 당신은 여전히 ​​플레이, 사용 플레이 업데이트를 중지하고 재생을 다시 시작해야합니다.

0

나는 어떻게 작동하는지 모르겠지만 "다른 사람이 나에게 말했다"- 예, 이것에 대한 저의 언급의 범위입니다 - 놀이 설치의 "저장소"폴더를 정리하는 것이 도움이 될 수 있습니다.

rm -rf /opt/play/repository/cache/com.mycompany 
play clean 
play update 
play run 

나를 위해 작동하는 것 같다 :

나는이 작업을 수행 조금 "refresh.sh"스크립트가 있습니다. 여기서 "/ opt/play"는 재생 설치가있는 곳이고 "com.mycompany"는 새로 고침해야하는 곳입니다.

나는이 말이 옳다고 말하지는 않지만 그 밖의 것이 없다면 총에 맞을 수도 있습니다.

0

sBt 버전 0.13.6 (2014 년 8 월)부터 SNAPSHOT 해상도를 제어하기 위해 빌드 설정 플래그 updateOptionsBuild.scala/build.sbt에 사용할 수 있습니다. 이 새로운 기능에 대한

updateOptions := updateOptions.value.withLatestSnapshots(false/true) 

문서는 자세한 내용은 GitHub의에 pull request 대응 here

입니다.