De varios enlaces que se encuentran en Internet y también según la respuesta de cvogt, esto es lo mínimo que debe hacer.
Tenga en cuenta que esta es una solución general para sbt. Si se trata de Play Framework, puede que le resulte más fácil realizar esta tarea con el complemento correspondiente
En primer lugar, necesita un nuevo proyecto sbt debido a todas las dependencias de la biblioteca a las que se debe hacer referencia para que se ejecute el generador de código fuente.
Cree el nuevo proyecto sbt usando este tutorial:http://scalatutorials.com/beginner/2013/07/18/Getting-Started -con-sbt/
Preferiblemente use el método Configuración usando giter8
Si funciona con Intellij, debe crear el archivo project/plugins.sbt
e inserte dentro de esta línea:addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0")
.
Ejecutar gen-idea
en sbt para generar un proyecto intellij.
Con giter8 obtienes un archivo ProjectNameBuild.scala generado automáticamente dentro de la carpeta del proyecto. Abra esto e incluya al menos estas dependencias de biblioteca:
libraryDependencies ++= List(
"mysql" % "mysql-connector-java" % "5.1.27",
"com.typesafe.slick" %% "slick" % "2.0.0",
"org.slf4j" % "slf4j-nop" % "1.6.4",
"org.scala-lang" % "scala-reflect" % scala_version
)
donde versión de scala es la variable private val scala_version = "2.10.3"
Ahora cree el generador de código fuente personalizado que se ve así:
import scala.slick.model.codegen.SourceCodeGenerator
object CustomSourceCodeGenerator {
import scala.slick.driver.JdbcProfile
import scala.reflect.runtime.currentMirror
def execute(url: String,
jdbcDriver: String,
user: String,
password: String,
slickDriver: String,
outputFolder: String,
pkg: String) = {
val driver: JdbcProfile = currentMirror.reflectModule(
currentMirror.staticModule(slickDriver)
).instance.asInstanceOf[JdbcProfile]
driver.simple.Database.forURL(
url,
driver = jdbcDriver,
user = user,
password = password
).withSession {
implicit session =>
new SourceCodeGenerator(driver.createModel).writeToFile(slickDriver, outputFolder, pkg)
}
}
}
Finalmente necesitas llamar a esto execute
método dentro del objeto principal del proyecto. Busque el archivo ProjectName.scala que giter8 generó automáticamente.
Dentro de él encontrará un println
llamar ya que esta es simplemente una aplicación de "hola mundo". Por encima de println
llamar algo así:
CustomSourceCodeGenerator.execute(
url = "jdbc:mysql://127.0.0.1/SOME_DB_SCHEMA?characterEncoding=UTF-8&useUnicode=true",
slickDriver = "scala.slick.driver.MySQLDriver",
jdbcDriver = "com.mysql.jdbc.Driver",
outputFolder = "/some/path",
pkg = "com.pligor.server",
user = "root",
password = "xxxxxyourpasswordxxxxx"
)
De esta forma cada vez que ejecutes sbt run
va a generar las clases de tabla requeridas por Slick automáticamente