Fra flere links fundet på internettet og også baseret på cvogts svar er dette det minimum, du skal gøre.
Bemærk, at dette er en generel løsning for sbt. Hvis du har at gøre med play framework, vil du måske finde det nemmere at udføre denne opgave med det relevante plugin
Først og fremmest har du brug for et nyt sbt-projekt på grund af alle de biblioteksafhængigheder, der skal refereres til, for at slick source-generatoren kan køre.
Opret det nye sbt-projekt ved hjælp af denne tutorial:http://scalatutorials.com/beginner/2013/07/18/getting-started -med-sbt/
Brug helst metoden Opsætning ved hjælp af giter8
Hvis det tilfældigvis virker med Intellij, skal du oprette filen project/plugins.sbt
og indsæt i denne linje:addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0")
.
Kør gen-idea
i sbt for at generere et intellij-projekt.
Med giter8 får du en autogenereret fil ProjectNameBuild.scala inde i projektmappen. Åbn dette og inkluder mindst disse biblioteksafhængigheder:
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
)
hvor scala version er variablen private val scala_version = "2.10.3"
Opret nu den brugerdefinerede kildekodegenerator, der ser sådan ud:
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)
}
}
}
Til sidst skal du kalde dette execute
metode inde i hovedprojektobjekt. Find filen ProjectName.scala, der blev automatisk genereret af giter8.
Inde i den finder du en println
opkald, da dette blot er en "hej verden"-applikation. Over println
kald sådan noget:
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"
)
På denne måde hver gang du udfører sbt run
du kommer til at generere de tabelklasser, der kræves af Slick automatisk