나는 sbt
git repo에서 의존성을 얻을 수있는 것을 들었다 (그리고 나는 내가 어디에서 기억할 수만 있다면 예제도 보았다는 것을 알고있다) .
github에서 종속성 harrah / up 을 얻으려고합니다 . 저장소는 아티팩트 JAR 파일을 제공하지 않으며 .NET을 사용하여 빌드하도록 설정된 소스 트리 만 제공합니다 sbt
. 내가 상상하는 프로세스 sbt
는 소스 저장소를 다운로드하고 빌드 한 다음 종속성 아티팩트로 사용하는 것입니다.
나는 sbt
실제로 이와 같은 일 을 할 수 있다고 상상할 수 있습니다 . 할 수 있습니까? 그렇다면 어떻게?
답변
네 확실합니다. 연산자에 Project
종속성을 부여 dependsOn
할 수 있으며 URI로 Github 프로젝트를 참조 할 수 있습니다 (예 : RootProject(uri("git://github.com/dragos/dupcheck.git"))
. 또는 git clone
프로젝트를 수행 한 다음 RootProject(file(...))
. 자세한 내용과 예제는 SBT 위키의 “전체 구성” 을 참조하십시오 .
답변
dependsOn
연산자를 사용하여 패키지화되지 않은 종속성을 프로젝트 종속성으로 처리하여 GitHub에서 프로젝트로 가져올 수 있습니다 . (이는 사전 컴파일 된 라이브러리 종속성이 포함되는 방식과 다릅니다).
#
표기법을 사용하여 가져올 분기를 지정할 수 있습니다 . 다음은 저에게 잘 맞는 Scala 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(...
동일한 외부 프로젝트에 의존하는 여러 SBT 프로젝트가있는 경우 sbt.boot.directory
불필요한 재 컴파일을 방지하기 위해 중앙 을 설정하는 것이 좋습니다 ( 여기 지침 참조 ).
답변
내 라이브러리의 종속성을 해결하는 데 문제가 있었기 때문에 (제안 된 사용 RootProject
)라는 개체를 지적하고 싶습니다 ProjectRef
. 따라서 git에있는 라이브러리에 의존해야하는 경우 다음과 같이하는 것이 좋습니다.
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/
답변
sbt 0.13+에 대한 답변을 추가하고 싶었습니다. 다음과 같이 build.sbt
프로젝트 루트 폴더 (아님 Build.scala
) 에 넣으십시오 .
lazy val root = (project in file(".")).dependsOn(playJongo)
lazy val playJongo = RootProject(uri("https://github.com/bekce/play-jongo.git"))