À partir de plusieurs liens trouvés sur Internet et également sur la base de la réponse du cvogt, c'est le minimum que vous devez faire.
Notez qu'il s'agit d'une solution générale pour sbt. Si vous avez affaire à un framework de jeu, vous trouverez peut-être plus facile d'effectuer cette tâche avec le plugin correspondant
Tout d'abord, vous avez besoin d'un nouveau projet sbt en raison de toutes les dépendances de la bibliothèque qui doivent être référencées pour que le générateur de source astucieux puisse fonctionner.
Créez le nouveau projet sbt à l'aide de ce didacticiel :http://scalatutorials.com/beginner/2013/07/18/getting-started -avec-sbt/
Utilisez de préférence la méthode Setup using giter8
Si cela fonctionne avec Intellij, vous devez créer le fichier project/plugins.sbt
et insérez à l'intérieur de cette ligne :addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0")
.
Exécuter gen-idea
dans sbt pour générer un projet intellij.
Avec giter8, vous obtenez un fichier généré automatiquement ProjectNameBuild.scala dans le dossier du projet. Ouvrez ceci et incluez au moins ces dépendances de bibliothèque :
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
)
où version scala est la variable private val scala_version = "2.10.3"
Créez maintenant le générateur de code source personnalisé qui ressemble à ceci :
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)
}
}
}
Enfin, vous devez appeler ceci execute
méthode à l'intérieur de l'objet principal du projet. Trouvez le fichier ProjectName.scala qui a été généré automatiquement par giter8.
À l'intérieur, vous trouverez un println
call puisqu'il s'agit simplement d'une application "hello world". Au-dessus de println
appelez quelque chose comme ça :
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 cette façon, chaque fois que vous exécutez sbt run
vous allez générer automatiquement les classes Table requises par Slick