Z kilku linków znalezionych w Internecie, a także na podstawie odpowiedzi cvogt, jest to minimum, które musisz zrobić.
Zauważ, że jest to ogólne rozwiązanie dla sbt. Jeśli masz do czynienia z frameworkiem do zabawy, może być ci łatwiej wykonać to zadanie za pomocą odpowiedniej wtyczki
Przede wszystkim potrzebujesz nowego projektu sbt ze względu na wszystkie zależności biblioteczne, do których należy się odwoływać, aby uruchomić sprawny generator źródeł.
Utwórz nowy projekt sbt, korzystając z tego samouczka:http://scalatutorials.com/beginner/2013/07/18/getting-started -z-sbt/
Najlepiej użyj metody Konfiguracja za pomocą gite8
Jeśli zdarzy się, że zadziała z Intellij, musisz utworzyć plik project/plugins.sbt
i wstaw wewnątrz tej linii:addSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0")
.
Wykonaj gen-idea
w sbt, aby wygenerować projekt intellij.
Dzięki giter8 otrzymujesz automatycznie wygenerowany plik ProjectNameBuild.scala wewnątrz folderu projektu. Otwórz to i dołącz przynajmniej te zależności biblioteczne:
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
)
gdzie scala version to zmienna private val scala_version = "2.10.3"
Teraz utwórz niestandardowy generator kodu źródłowego, który wygląda tak:
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)
}
}
}
Na koniec musisz wywołać to execute
metoda wewnątrz głównego obiektu projektu. Znajdź plik ProjectName.scala, który został automatycznie wygenerowany przez giter8.
W środku znajdziesz println
zadzwoń, ponieważ jest to tylko aplikacja "hello world". Powyżej println
zadzwoń do czegoś takiego:
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"
)
W ten sposób za każdym razem, gdy wykonujesz sbt run
masz zamiar automatycznie wygenerować klasy tabeli wymagane przez Slick