/ / Générateur de code lisse avec dépendances statiques - scala, sbt, slick

Générateur de code fluide avec dépendances statiques - scala, sbt, slick

J'essaie d'utiliser Slick 2.1 avec MS SQL Server dans mon application Play 2.3. Je ne peux plus essayer de faire en sorte que le générateur de code de Slick fonctionne Build.scala. C’est parce que le pilote JDBC de MS SQL Server n’est pas sur Maven et que je m’insère simplement le fichier jar du pilote dans le dossier /lib dossier. En ce moment, je reçois cette erreur:

[error] (run-main-0) java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver

Voici à quoi ressemble le générateur de code:

lazy val slickCodeGenTask = (sourceManaged, dependencyClasspath in Compile, runner in Compile, streams) map { (dir, cp, r, s) =>
val outputDir = (dir / "slick").getPath
val url = "jdbc:sqlserver://localhost:1433;databaseName=mydb"
val jdbcDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"
val slickDriver = "com.typesafe.slick.driver.ms.SQLServerDriver"
val pkg = "db"
toError(r.run("scala.slick.codegen.SourceCodeGenerator", cp.files, Array(slickDriver, jdbcDriver, url, outputDir, pkg, user, pswd), s.log))
val fname = outputDir + "/db/Tables.scala"
Seq(file(fname))
}

Comment faire en sorte que le pilote JDBC de MS SQL Server fonctionne avec le générateur de code Slick?

Réponses:

0 pour la réponse № 1

SBT dans Play 2.3 ne semble pas "ajouter automatiquement le contenu de lib dossier à classpath, donc je suis tombé sur une solution après avoir exécuté idea commande pour mon IDE Intellij qui, entre autres choses, ajoute des fichiers jar de lib à classpath.

De plus, après de nombreuses recherches, la solution finale à ce problème particulier consistait à utiliser des logiciels open source. jtds pilote pour le générateur de code slick et pilote ms jdbc pour le reste de l’application. Voici à quoi ressemblait le code du générateur:

lazy val slickCodeGenTask = (sourceManaged, dependencyClasspath in Compile, runner in Compile, streams) map { (dir, cp, r, s) =>
val outputDir = "app"
val url = "jdbc:jtds:sqlserver://localhost:1433;databaseName=mydb"
val jdbcDriver = "net.sourceforge.jtds.jdbc.Driver"
val slickDriver = "com.typesafe.slick.driver.ms.SQLServerDriver"
val pkg = "db"
toError(r.run("scala.slick.codegen.SourceCodeGenerator", cp.files, Array(slickDriver, jdbcDriver, url, outputDir, pkg, user, pswd), s.log))
val fname = "Tables.scala"
Seq(file(fname))
}

0 pour la réponse № 2

Sur une note tangentielle, pour sbt 0.13.x, il est recommandé de changer scala.slick.codegen.SourceCodeGenerator -> slick.codegen.SourceCodeGenerator