복붙노트

[SCALA] 어떻게 다른 SBT 프로젝트에서 외부 SBT 프로젝트를 참조하는?

SCALA

어떻게 다른 SBT 프로젝트에서 외부 SBT 프로젝트를 참조하는?

나는 스칼라 응용 프로그램과 공통 핵심 라이브러리의 다음과 같은 설정을 가지고 : 뿌리

 -> /ApplicationA
   -> /project
     -> /build.sbt
 -> /CoreLibrary
   -> /project
     -> /build.sbt

그래서 때마다 것을 CoreLibrary이 애플리케이션 A가 아니라 내장되어 변경 라 이클립스 프로젝트 참조 à CoreLibrary에 애플리케이션 A에서 참조를 추가합니다. I've는 애플리케이션 A에 대한 build.Scala 다음과 같은 내용을 시도했다 :

  val core = Project(
      id = "platform-core",
      base = file("../CoreLibrary"))

  val main = Project(id = "application, base = file(".")).dependsOn(core)

그러나 컴파일 애플리케이션 A SBT는 종속성은 하위 디렉토리가 될 수 뿌려! :

java.lang.AssertionError: assertion failed: Directory C:\git\CoreLibrary is not contained in build root C:\git\ApplicationA

이것은이 프로젝트 의존성을 갖는 올바른 방법은 무엇 완전히 간단 보인다?

해결법

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

    1.당신은 그런 프로젝트에 소스 의존성을 수행 할 수 있습니다

    당신은 그런 프로젝트에 소스 의존성을 수행 할 수 있습니다

     lazy val core = RootProject(file("../CoreLibrary"))
    
     val main = Project(id = "application", base = file(".")).dependsOn(core) 
    

    나는 멀티 모듈 플레이 빌드 작업 예제가 있습니다 https://github.com/ahoy-jon/play2MultiModule/blob/master/playapp/project/Build.scala

    하지만 적절한 방법은 그것을 만드는 것입니다하고의 (그것이 당신의 상황의 따라 다름) 생각

     -> /project/
       -> Build.scala
     -> /ApplicationA
       -> /project
         -> /build.sbt
     -> /CoreLibrary
       -> /project
         -> /build.sbt
    

    두 프로젝트와 그들 사이의 종속성을 참조.

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

    2.SBT 0.12.1으로이 프로젝트에 대한 간단한 참조를 얻을 수 것 같습니다 :

    SBT 0.12.1으로이 프로젝트에 대한 간단한 참조를 얻을 수 것 같습니다 :

    나는 ProjectRef 대신 RootProject을 사용

    http://www.scala-sbt.org/0.12.1/api/sbt/ProjectRef.html

    ProjectRef(file("../util-library"), "util-library")
    

    SBT-일식도 작동합니다.

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

    3.SBT 0.13 이후, 당신은 Build.scala 파일을 필요없이 .sbt에서 직접 멀티 프로젝트 정의를 만들 수 있습니다.

    SBT 0.13 이후, 당신은 Build.scala 파일을 필요없이 .sbt에서 직접 멀티 프로젝트 정의를 만들 수 있습니다.

    애플리케이션 A / 프로젝트에 다음 / build.sbt을 추가하면 충분하다 그래서.

    lazy val core = RootProject(file("../CoreLibrary"))
    
    val main = Project(id = "application", base = file(".")).dependsOn(core) 
    
  4. from https://stackoverflow.com/questions/11653435/how-to-reference-external-sbt-project-from-another-sbt-project by cc-by-sa and MIT license