www update org scala sbt

update - scala sbt ubuntu



¿Alguien puede explicar la forma correcta de usar SBT? (3)

Me estoy saliendo del armario en esto! No entiendo SBT. Allí, lo dije, ahora ayúdame por favor.

Todos los caminos conducen a Roma, y ​​eso es lo mismo para SBT: para comenzar con SBT hay SBT , SBT Launcher , SBT-extras , etc., y luego hay diferentes formas de incluir y decidir sobre repositorios. ¿Hay una ''mejor'' manera?

Lo estoy preguntando porque a veces me pierdo un poco. La documentación de SBT es muy minuciosa y completa, pero no sé cuándo usar build.sbt o project/build.properties o project/Build.scala o project/plugins.sbt .

Entonces se vuelve divertido, está el Scala-IDE y SBT : ¿cuál es la forma correcta de usarlos juntos? ¿Qué viene primero, el huevo o la gallina?

Lo más importante es, probablemente, ¿cómo se encuentran los repositorios y las versiones correctas para incluir en su proyecto? ¿Saco un machette y empiezo a abrir el camino hacia adelante? A menudo encuentro proyectos que incluyen todo y el fregadero de la cocina, y luego me doy cuenta, no soy el único que se pierde un poco.

Como un simple ejemplo, en este momento, estoy comenzando un nuevo proyecto. Quiero utilizar las últimas características de SLICK y Scala y esto probablemente requiera la última versión de SBT. ¿Cuál es el punto más sensato para comenzar, y por qué? ¿En qué archivo debería definirlo y cómo debería verse? Sé que puedo hacer que esto funcione, pero realmente me gustaría una opinión experta sobre dónde debería ir todo (por qué debería ir allí habrá una bonificación).

He estado utilizando SBT para proyectos pequeños durante más de un año. SBT y luego SBT Extras (ya que desaparecieron algunos dolores de cabeza mágicamente), pero no estoy seguro de por qué debería usar uno u otro. Me estoy frustrando un poco por no entender cómo encajan las cosas ( SBT y repositorios), y creo que salvará al próximo tipo que viene de muchas maneras si esto pudiera explicarse en términos humanos.


Lo más importante es, probablemente, ¿cómo se encuentran los repositorios y las versiones correctas para incluir en su proyecto? ¿Saco un machette y empiezo a abrir el camino hacia adelante? A menudo encuentro proyectos que incluyen todo y el fregadero de la cocina

Para las dependencias basadas en Scala, iría con lo que recomiendan los autores. Por ejemplo: http://code.google.com/p/scalaz/#SBT indica usar:

libraryDependencies += "org.scalaz" %% "scalaz-core" % "6.0.4"

O https://github.com/typesafehub/sbteclipse/ tiene instrucciones sobre dónde agregar:

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0-RC1")

Para las dependencias basadas en Java, utilizo http://mvnrepository.com/ para ver lo que hay disponible, luego hago clic en la pestaña SBT. Por ejemplo http://mvnrepository.com/artifact/net.sf.opencsv/opencsv/2.3 indica usar:

libraryDependencies += "net.sf.opencsv" % "opencsv" % "2.3"

Luego saca la machette y comienza a abrir el camino hacia adelante. Si tiene suerte, no terminará usando frascos que dependen de algunos de los mismos frascos pero con versiones incompatibles. Dado el ecosistema de Java, a menudo se termina incluyendo todo y el fregadero de la cocina y se necesita un cierto esfuerzo para eliminar las dependencias o garantizar que no faltan las dependencias requeridas.

Como un simple ejemplo, en este momento, estoy comenzando un nuevo proyecto. Quiero utilizar las últimas características de SLICK y Scala, y esto probablemente requiera la última versión de SBT. ¿Cuál es el punto más sensato para comenzar, y por qué?

Creo que el punto clave es construir inmunidad a sbt gradualmente .

Asegúrate de entender:

  1. formato de ámbitos {<build-uri>}<project-id>/config:key(for task-key)
  2. los 3 sabores de las configuraciones ( SettingKey , TaskKey , InputKey ) - lea la sección llamada "Task Keys" en http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def

Mantenga esas 4 páginas abiertas en todo momento para que pueda saltar y buscar varias definiciones y ejemplos:

  1. http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def
  2. http://www.scala-sbt.org/release/docs/Detailed-Topics/index
  3. http://harrah.github.com/xsbt/latest/sxr/Keys.scala.html
  4. http://harrah.github.com/xsbt/latest/sxr/Defaults.scala.html

Aproveche al máximo la función de show e inspect y completar la pestaña para familiarizarse con los valores reales de la configuración, sus dependencias, definiciones y configuraciones relacionadas. No creo que las relaciones que descubras usando inspect estén documentadas en ninguna parte. Si hay una mejor manera en que quiero saber al respecto.


La forma en que uso sbt es:

  1. use sbt-extras - solo obtenga el script de shell y agréguelo a la raíz de su proyecto
  2. Cree una carpeta de proyecto con un archivo MyProject.scala para configurar sbt. Prefiero esto más que el enfoque build.sbt - es scala y es más flexible
  3. Cree un archivo de proyecto / plugins.sbt y agregue el complemento apropiado para su IDE. O bien sbt-eclipse, sbt-idea o ensime-sbt-cmd para que pueda generar archivos de proyecto para eclipse, intellij o ensime.
  4. Inicie sbt en la raíz de su proyecto y genere los archivos de proyecto para su IDE
  5. Lucro

No me molesto en verificar los archivos del proyecto IDE, ya que son generados por sbt, pero puede haber razones por las que desee hacerlo.

Puede ver un ejemplo configurado así here .


Use Typesafe Activator, una forma elegante de llamar a sbt, que viene con plantillas de proyectos y semillas: https://typesafe.com/activator

Activator new Fetching the latest list of templates... Browse the list of templates: http://typesafe.com/activator/templates Choose from these featured templates or enter a template name: 1) minimal-java 2) minimal-scala 3) play-java 4) play-scala (hit tab to see a list of all templates)