Från flera länkar som finns på internet och även baserat på cvogts svar är detta det minsta du behöver göra.
Observera att detta är en allmän lösning för sbt. Om du har att göra med spelramverk kanske du tycker det är lättare att utföra denna uppgift med relevant plugin
Först och främst behöver du ett nytt sbt-projekt på grund av alla biblioteksberoenden som måste refereras till för att slick source generator ska kunna köras.
Skapa det nya sbt-projektet med den här handledningen:http://scalatutorials.com/beginner/2013/07/18/getting-started -med-sbt/
Använd helst metoden Setup using giter8
Om det råkar fungera med Intellij måste du skapa filen project/plugins.sbt
och infoga på denna rad:addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0")
.
Kör gen-idea
i sbt för att generera ett intellij-projekt.
Med giter8 får du en autogenererad fil ProjectNameBuild.scala inuti projektmappen. Öppna detta och inkludera åtminstone dessa biblioteksberoenden:
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
)
där scala version är variabeln private val scala_version = "2.10.3"
Skapa nu den anpassade källkodsgeneratorn som ser ut så här:
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)
}
}
}
Slutligen måste du kalla detta execute
metod inuti huvudprojektobjektet. Hitta filen ProjectName.scala som genererades automatiskt av giter8.
Inuti den hittar du en println
samtal eftersom detta bara är en "hej världen"-applikation. Ovanför println
kalla något sånt:
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"
)
Så här varje gång du kör sbt run
du kommer att generera de tabellklasser som krävs av Slick automatiskt