如何使用gradle添加“jdbc”插件

时间:2016-10-09 00:32:15

标签: java scala gradle playframework

我花了几个小时尝试实施 这个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)获取数据库访问权限,但仍然会收到错误,如下面的屏幕截图所示:

enter image description here

所以,我做错了:正确的代码 - @Inject()(db: Database)

1 个答案:

答案 0 :(得分:0)

首先,您必须按照文档Adding dependencies中所述的正确方式声明Play!个依赖项。因此,您必须使用play而不是compile来实现编译时依赖性。

例如对于Postgres DB,配置可能如下:

的build.gradle

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"
}

application.conf

# 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

P.S。

idea gradle插件是可选的。但目前play + gradle + idea整合并不是很好。这就是为什么我不时要调用gradlew cleanIdea idea命令只是为了将依赖关系和源包含到idea-project中。

目前我有以下版本:

  • IntelliJ IDEA 2017.1.4
  • Gradle 3.5
  • Play! 2.5.8

我希望将来整合比今天好。