我花了几个小时尝试实施
这个sbt代码libraryDependencies += jdbc
用于gradle。
我只想按照here所述在我的应用中添加数据库访问权限。如果没有该插件,我看不到 play.api.db.DB 类,只有 play.api.db.Database 和 play.api.db。 DBAPI 。
有人可以帮助我吗?
我正在使用Gradle 3.1,JDK1.8.0_05,Play!2.5.8,Scala2.11
这是合适的gradle代码:
configurations {
compile
}
dependencies {
compile group: 'com.typesafe.play', name: 'play-jdbc-api_2.11', version: '2.5.8'
compile group: 'com.typesafe.play', name: 'anorm_2.11', version: '2.5.8'
compile group: 'com.typesafe.play', name: 'play-iteratees_2.11', version: '2.5.8'
compile group: 'org.postgresql', name: 'postgresql', version: '9.3-1100-jdbc4'
}
* UPDATE
我也尝试使用@Inject(db: Database)
获取数据库访问权限,但仍然会收到错误,如下面的屏幕截图所示:
所以,我做错了:正确的代码 - @Inject()(db: Database)
答案 0 :(得分:0)
首先,您必须按照文档Adding dependencies中所述的正确方式声明Play!
个依赖项。因此,您必须使用play
而不是compile
来实现编译时依赖性。
例如对于Postgres DB,配置可能如下:
plugins {
id "play"
id "idea"
}
ext {
playVersion = '2.5.8'
scalaVersion = '2.11'
javaVersion = '1.8'
gradleVersion = '3.5'
}
model {
components {
play {
platform play: playVersion, scala: scalaVersion, java: javaVersion
injectedRoutesGenerator = true
}
}
}
dependencies {
play "com.typesafe.play:play-java_$scalaVersion:$playVersion"
play "com.typesafe.play:play-jdbc-api_$scalaVersion:$playVersion"
play "com.typesafe.play:play-java-jdbc_$scalaVersion:$playVersion"
play "org.postgresql:postgresql:42.1.1"
playRun "ch.qos.logback:logback-classic:1.2.3"
}
# Database configuration
# ~~~~~
# You can declare as many datasources as you want.
# By convention, the default datasource is named `default`
db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://server_host:5432/db_name"
db.default.user=user_name
db.default.password=user_password
idea
gradle插件是可选的。但目前play + gradle + idea
整合并不是很好。这就是为什么我不时要调用gradlew cleanIdea idea
命令只是为了将依赖关系和源包含到idea-project中。
目前我有以下版本:
IntelliJ IDEA 2017.1.4
Gradle 3.5
Play! 2.5.8
我希望将来整合比今天好。