2011-11-03 6 views
8

Estoy construyendo un proyecto simple de Scala con SBT 0.11.Cómo configurar dependencias administradas en un proyecto SBT 0.11 que tiene Build.scala

Todos los archivos de código están en ~/MyProject/src/main/scala/

~/MyProject/build.sbt es la siguiente


name := "MyProject" 

version := "1.0" 

scalaVersion := "2.9.1" 

libraryDependencies ++= Seq(
    "mysql" % "mysql-connector-java" % "5.1.+", 
    "c3p0" % "c3p0" % "0.9.1.2", 
    "org.apache.commons" % "commons-lang3" % "3.0.1", 
    "commons-lang" % "commons-lang" % "2.6", 
    "javassist" % "javassist" % "3.12.1.GA" 
) 

~/MyProject/project/Build.scala es la siguiente


import sbt._ 

object MyProjectBuild extends Build { 
    lazy val MyProject = Project("MyProject", file(".")) 
} 

Esto parece funcionar casi bien. El proyecto se compila y ejecuta. El nombre del proyecto está configurado correctamente (si no utilizo Build.scala, el nombre parece aparecer como "predeterminado - ????", a pesar de estar especificado en build.sbt).

Pero el problema es que las dependencias no parecen funcionar: el comando update no descarga nada. ¿Cómo arreglar esto? ¿Debo especificar mis dependencias en Build.scala en lugar de en build.sbt en este caso?

+0

En el título, ¿quiere decir 'build.sbt' en lugar de' build.scala'? –

+0

@ kipton-barros No. Quiero decir que un proyecto tiene 'Build.scala' además de' build.sbt' – Ivan

Respuesta

17

¿Es posible que ya haya recuperado las dependencias del proyecto, pero no se da cuenta porque están almacenadas en el caché Ivy? Puede ver la ruta de clase gestionado desde la consola con el comando SBT

show managed-classpath 

Las versiones recientes de SBT no almacene las dependencias gestionadas en el directorio del proyecto, a menos que el proyecto está configurado para hacerlo. Si lo desea, puede añadir lo siguiente a su archivo build.sbt:

retrieveManaged := true 

Esto creará un directorio ~/MyProject/lib_managed/ y contenidos.

+0

¡Pero esto no copia las bibliotecas de scala a lib_managed ?! ¿Cómo puedo lograr esto? – Themerius

+4

Es posible que deba ejecutar los comandos SBT 'reload',' clean' y 'update'. –

+0

Lamentablemente esto no funciona. El 'scala-compiler.jar' aún se guarda ~/.sbt/boot/..., sería genial si también se puede guardar en lib_managed. – Themerius

Cuestiones relacionadas