2012-01-28 2 views
4

SBT를 사용할 때 아이디어가 thrid 당사자 종속성을 인식하는 방법을 파악하려고합니다. sbt 플러그인 gen-idea를 사용하면 예상대로 내 ~/.ivy/디렉토리에 들어갈 모든 필요한 종속성을 다운로드하는 것처럼 보입니다. intellij가 어떻게이 deps를 사용할 수 있습니까?Intellij가 SBT 스칼라에서 종속성을 사용하게하는 방법

편집 : 내가 알아챈 한 가지는 모듈 대신에 새로운 아이디어 프로젝트를 만드는 것입니다. 왜이게 될거야? 동일한 프로젝트에서 여러 개의 sbt 모듈을 가질 수 있기를 원합니다.

+0

어딘가에 업데이트 명령을 시도 했습니까? 또 다른 오류는 내가 sbt 구성을 설정했지만 콘솔을 다시 시작하지 않았다는 것입니다. 다음은 몇 가지 팁입니다. –

답변

3

sbt-idea 플러그인은 다중 모듈 sbt 프로젝트에서 작동합니다. 우리는 sbt-0.10.0 주위에서 사용하고 있으며 현재 sbt-0.11.2입니다. 의 vcaf- 예에서

object Vcaf extends Build { 
    import Resolvers._ 
    import Dependencies._ 
    import BuildSettings._ 

    lazy val vcafDb = Project(
    id = "vcaf-db", 
    base = file("./vcaf-db"), 
    dependencies = Seq(), 
    settings = buildSettings ++ /* proguard */ SbtOneJar.oneJarSettings ++ Seq(libraryDependencies := dbDeps, resolvers := cseResolvers) 
) 

    lazy val vcaf = Project(
    "vcaf", 
    file("."), 
    dependencies = Seq(vcafDb), 
    aggregate = Seq(vcafDb), 
    settings = buildSettings ++ Seq(libraryDependencies := vcafDeps, resolvers := cseResolvers) ++ webSettings 
) 
} 

: 확인을 설정 빌드 파일의 의존성 부분을 것 같다, 그래서 여기에 우리가 전체 사양 Build.scala 파일에서 프로젝트 설정을하는 방법의 예 db 프로젝트는 vcaf 프로젝트 폴더 내의 폴더에 있습니다. vcaf-db 프로젝트에는 자체 build.sbt 또는 Build.scala 파일이 없습니다. 각 프로젝트마다 libraryDependencies가 지정되어있어 누락 된 링크 일 수도 있고 아닐 수도 있습니다.

ChrisJamesC가 언급했듯이 빌드 정의의 변경 사항을 적용하려면 SBT에서 "다시로드"(또는 sbt를 종료하고 다시 돌아와야합니다.)해야합니다. 프로젝트가 다시로드 된 후에는 "gen-idea no-classifier no-sbt-classifiers"를 수행하고 빌드 파일에 정의 된대로 기본 프로젝트, 모듈 및 라이브러리 액세스 권한이있는 intellij 프로젝트를 가져올 수 있어야합니다.

희망이 있습니다.

0

하나의 IDEA 프로젝트에 여러 개의 SBT 모듈이 필요하면 sbt multi-project builds (별칭 : 하위 프로젝트)을 사용할 수 있습니다. 모듈을 하위 프로젝트로 참조하는 마스터 프로젝트를 만든 다음 마스터에서 gen-idea를 실행하면됩니다. 당신이 jxstanford의 대답으로 Build.scala (안 build.sbt)를 사용해야 할 모듈 중 또는 다음과 같은 종속성을 지정하려면 하위의

lazy val foo = Project(id = "foo", base = file("foo")) 
lazy val bar = Project(id = "bar", base = file("bar")) dependsOn(foo) 

한 수준 올바르게 결과에 반영 종속성과 (잘 작동 IDEA 프로젝트), 중첩 된 하위 프로젝트는 작동하지 않는 것처럼 보입니다. 또한 서브 프로젝트가 마스터 프로젝트의 서브 디렉토리에 있어야한다는 제한적인 것 같습니다 (즉, file("../foo")은 허용되지 않습니다).

도 참조하십시오. How to manage multiple interdependent modules with SBT and IntelliJ IDEA?

관련 문제