Aus mehreren Links im Internet und auch basierend auf der Antwort von cvogt ist dies das Minimum, das Sie tun müssen.
Beachten Sie, dass dies eine allgemeine Lösung für sbt ist. Wenn Sie sich mit Play Framework befassen, finden Sie es möglicherweise einfacher, diese Aufgabe mit dem entsprechenden Plugin auszuführen
Zuallererst benötigen Sie ein neues sbt-Projekt wegen all der Bibliotheksabhängigkeiten, die referenziert werden müssen, damit der Slick Source Generator ausgeführt werden kann.
Erstellen Sie das neue sbt-Projekt mit diesem Tutorial:http://scalatutorials.com/beginner/2013/07/18/getting-started -mit-sbt/
Verwenden Sie vorzugsweise die Methode Einrichtung mit giter8
Wenn es mit Intellij funktioniert, müssen Sie die Datei project/plugins.sbt
erstellen und fügen Sie in diese Zeile ein:addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0")
.gen-idea
ausführen in sbt, um ein intellij-Projekt zu generieren.
Mit giter8 erhalten Sie eine automatisch generierte Datei ProjectNameBuild.scala im Projektordner. Öffnen Sie diese und schließen Sie mindestens diese Bibliotheksabhängigkeiten ein:
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
)
wobei Scala-Version die Variable private val scala_version = "2.10.3"
ist
Erstellen Sie nun den benutzerdefinierten Quellcodegenerator, der so aussieht:
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)
}
}
}
Schließlich müssen Sie dieses execute
aufrufen -Methode innerhalb des Hauptprojektobjekts. Suchen Sie die Datei ProjectName.scala, die von giter8 automatisch generiert wurde.
In ihr finden Sie einen println
anrufen, da dies lediglich eine "Hallo Welt"-Anwendung ist. Oben println
Rufen Sie so etwas auf:
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"
)
Auf diese Weise jedes Mal, wenn Sie sbt run
ausführen Sie werden die von Slick benötigten Tabellenklassen automatisch generieren