tipos tag remove qué practices existen etiquetas crear commits best git scala build sbt build-dependencies

tag - qué tipos de etiquetas existen en git



¿Cómo puede sbt extraer artefactos de dependencia de git? (4)

Como tuve problemas para resolver las dependencias de mi biblioteca (usando el RootProject sugerido) me gustaría señalar el objeto llamado ProjectRef . Por lo tanto, si uno necesita depender de una biblioteca que reside en git, sugiero que lo haga de la siguiente manera:

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://[email protected]:user/repo.git#branch"), "repo-name") }

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

He escuchado (y sé que también he visto ejemplos, si solo puedo recordar dónde) que sbt puede obtener dependencias de un git repo.

Estoy buscando obtener la dependencia harrah/up de github. El repositorio no proporciona ningún archivo JAR de artefacto, solo un árbol de fuente que está configurado para ser construido usando sbt . El proceso que estoy imaginando es que sbt descargará el repositorio de origen, lo compilará y luego lo usará como el artefacto de dependencia.

Puedo estar imaginando que, de hecho, sbt puede hacer algo como esto. ¿Puede? Y si es así, ¿cómo?


Puede importar dependencias no empaquetadas en su proyecto desde GitHub tratándolas como dependencias de proyecto, utilizando el operador dependsOn . (Esto es distinto de la forma en que se incluyen las dependencias de biblioteca precompiladas).

Tenga en cuenta que puede especificar qué rama extraer utilizando # notación. Aquí hay un código Scala SBT que funciona bien para mí:

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(...

Tenga en cuenta que si tiene varios proyectos SBT que dependen del mismo proyecto externo, vale la pena configurar un sbt.boot.directory central para evitar recompilaciones innecesarias (consulte las instrucciones aquí ).


Quería agregar una respuesta para sbt 0.13+. Simplemente ponga algo como esto en su build.sbt en la carpeta raíz del proyecto (no en Build.scala ):

lazy val root = (project in file(".")).dependsOn(playJongo) lazy val playJongo = RootProject(uri("https://github.com/bekce/play-jongo.git"))


Sí de hecho. Puede asignarle a su Project una dependencia con el operador dependsOn , y puede hacer referencia a un proyecto Github mediante su URI, por ejemplo, RootProject(uri("git://github.com/dragos/dupcheck.git")) . Alternativamente, puede git clone el proyecto y luego hacer referencia a su copia local con RootProject(file(...)) . Consulte "Configuración completa" en la wiki de SBT para obtener detalles y ejemplos.