복붙노트

[SCALA] 어떻게 SBT 자식에서 종속 아티팩트를 당겨 수 있습니까?

SCALA

어떻게 SBT 자식에서 종속 아티팩트를 당겨 수 있습니까?

나는 들었어요 (그리고 나는 단지 어디 기억할 수 있다면 내가 너무 예를 본 적이 알고) 그 SBT는 자식의 repo에서 종속성을 얻을 수 있습니다.

나는하라 / 최대 GitHub의에서 종속성을 얻기 위해 찾고 있어요. 저장소는, SBT를 사용하여 구축 할 수 있도록 설정 한 경우에만 소스 트리를 어떤 유물의 JAR 파일을 제공하지 않습니다. 내가 상상하고이 과정은 SBT는, 소스 REPO를 다운로드를 구축하고 있음을 사용하는 것입니다 종속성 이슈로.

나는 사실 같은 것을 할 수 SBT 상상 할 수있다. 그것을 할 수 있습니까? 그리고 만약 그렇다면, 어떻게?

해결법

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

    1.네 확실합니다. 당신은 당신의 프로젝트에게의 DependsOn 연산자 종속성을 줄 수 있으며, 예를 들어 RootProject (URI ( "자식 : //github.com/dragos/dupcheck.git"))에 대한, 그 URI에 의해 Github에서 프로젝트를 참조 할 수 있습니다. 다른 방법으로는 프로젝트를 복제 이눔 수 있으며, 다음 RootProject (파일 (...))와 로컬 복사본을 참조합니다. 자세한 내용 및 예는 SBT 위키에 "전체 구성"을 참조하십시오.

    네 확실합니다. 당신은 당신의 프로젝트에게의 DependsOn 연산자 종속성을 줄 수 있으며, 예를 들어 RootProject (URI ( "자식 : //github.com/dragos/dupcheck.git"))에 대한, 그 URI에 의해 Github에서 프로젝트를 참조 할 수 있습니다. 다른 방법으로는 프로젝트를 복제 이눔 수 있으며, 다음 RootProject (파일 (...))와 로컬 복사본을 참조합니다. 자세한 내용 및 예는 SBT 위키에 "전체 구성"을 참조하십시오.

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

    2.당신은의 DependsOn 연산자를 사용하여, 프로젝트 종속성로 처리하여 GitHub의에서 프로젝트에 포장되지 종속성을 가져올 수 있습니다. (이것은 미리 컴파일 된 라이브러리 의존성이 포함되는 방식 구별된다).

    당신은의 DependsOn 연산자를 사용하여, 프로젝트 종속성로 처리하여 GitHub의에서 프로젝트에 포장되지 종속성을 가져올 수 있습니다. (이것은 미리 컴파일 된 라이브러리 의존성이 포함되는 방식 구별된다).

    당신이 # 표기법을 사용하여 끌어 분기를 지정할 수 있습니다. 여기에 나를 위해 잘 작동 일부 스칼라 SBT의 코드는 다음과 같습니다

    object V {
      val depProject = "master"
      // Other library versions
    }
    
    object Projects {
      lazy val depProject = RootProject(uri("git://github.com/me/dep-project.git#%s".format(V.depProject)))
    }
    
    // Library dependencies
    lazy val myProject = Project("my-project", file("."))
    .settings(myProjectSettings: _*)
    .dependsOn(Projects.depProject)
    .settings(
      libraryDependencies ++= Seq(...
    

    같은 외부 프로젝트에 dependending 여러 SBT 프로젝트가있는 경우, 불필요한 재 컴파일을 (여기 지침 참조)를 피하기 위해 중앙 sbt.boot.directory을 설정하는 가치가 있습니다.

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

    3.나는 문제 (제안 RootProject 사용) 해결 내 라이브러리의 의존성을 받고 있었다 때문에 나는 ProjectRef라는 개체를 지적하고 싶습니다. 하나는 라이브러리가 자식에 거주하는에 의존해야하는 경우 따라서, 나는 다음과 같이 그렇게하는 것이 좋습니다 :

    나는 문제 (제안 RootProject 사용) 해결 내 라이브러리의 의존성을 받고 있었다 때문에 나는 ProjectRef라는 개체를 지적하고 싶습니다. 하나는 라이브러리가 자식에 거주하는에 의존해야하는 경우 따라서, 나는 다음과 같이 그렇게하는 것이 좋습니다 :

    import sbt.Keys._
    import sbt._
    
    object MyBuild extends Build {
    
      lazy val root = Project("root", file("."))
        .dependsOn(myLibraryinGit)
        .settings(
          ...,
          libraryDependencies ++= Seq(...))
    
      lazy val myLibraryinGit = ProjectRef(uri("git://git@github.com:user/repo.git#branch"), "repo-name")
    
    }
    

    출처 : http://blog.xebia.com/git-subproject-compile-time-dependencies-in-sbt/

  4. ==============================

    4.나는 SBT의 0.13+에 대한 대답을 추가하고 싶었다. 그냥 프로젝트의 루트 폴더 (안 Build.scala)에 당신의 build.sbt이 같은 것을 넣어 :

    나는 SBT의 0.13+에 대한 대답을 추가하고 싶었다. 그냥 프로젝트의 루트 폴더 (안 Build.scala)에 당신의 build.sbt이 같은 것을 넣어 :

    lazy val root = (project in file(".")).dependsOn(playJongo)
    
    lazy val playJongo = RootProject(uri("https://github.com/bekce/play-jongo.git"))
    
  5. from https://stackoverflow.com/questions/7550376/how-can-sbt-pull-dependency-artifacts-from-git by cc-by-sa and MIT license