在 gradle 中使用 Firebase 数据库
Use Firebase Database in gradle
我正在尝试制作一个 gradle 脚本来上传一些使用 firebase 构建的数据。但是我从 Firebase Java Admin SDK 收到了一个奇怪的错误:-
Caused by: java.lang.NoSuchMethodError: org.json.JSONObject.<init>(Ljava/lang/String;)V
at com.google.firebase.auth.FirebaseCredentials$CertCredential.<init>(FirebaseCredentials.java:273)
at com.google.firebase.auth.FirebaseCredentials.fromCertificate(FirebaseCredentials.java:156)
at com.google.firebase.auth.FirebaseCredentials.fromCertificate(FirebaseCredentials.java:130)
at com.google.firebase.auth.FirebaseCredentials$fromCertificate.call(Unknown Source)
at eu.long1.jwnotes.gradleplugins.UploadTask.action(UploadTask.groovy:31)
任务是这样的:
class UploadTask extends DefaultTask {
String message = "Huray!"
@TaskAction
def action() {
String a = "private-key"
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredential(FirebaseCredentials.fromCertificate(new ByteArrayInputStream(a.getBytes("UTF-8"))))
.setDatabaseUrl("https://jwnotes.firebaseio.com/")
.build()
FirebaseApp.initializeApp(options)
FirebaseDatabase.getInstance().getReference().child("alfa-gradle").setValue(message)
}
}
我在尝试申请 运行 任务时遇到错误。
更新
这是我的插件gradle文件:
plugins {
id 'groovy'
id 'maven'
}
group 'eu.long1.jwnotes.gradleplugins'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
compile gradleApi()
compile localGroovy()
}
dependencies {
compile 'com.google.firebase:firebase-admin:5.3.1'
compile 'org.json:json:20160810'
}
sourceCompatibility = 1.8
jar {
into('lib') {
from 'lib'
}
}
您的运行时环境正在选择与 Firebase SDK 不兼容的另一个版本的 org.json:json
库。您需要确保它使用正确版本的 json library。这通常需要检查依赖树,并对一些不必要的依赖项进行显式排除。
更新
以下对我有用:
buildscript {
repositories {
maven {
mavenCentral()
url uri('repo')
}
}
dependencies {
classpath group: 'net.hkj', name: 'gradle-task',
version: '1.0-SNAPSHOT'
}
dependencies {
classpath 'com.google.firebase:firebase-admin:5.3.1'
}
}
task greeting(type: net.hkj.UploadTask) {
}
我在 repo 目录中有包含已编译任务的 jar。我将您的任务实现放入 src/main/groovy/net/hkj/UploadTask.groovy 文件中,并将输出编译到 repo 目录中,然后再调用问候任务。
我正在尝试制作一个 gradle 脚本来上传一些使用 firebase 构建的数据。但是我从 Firebase Java Admin SDK 收到了一个奇怪的错误:-
Caused by: java.lang.NoSuchMethodError: org.json.JSONObject.<init>(Ljava/lang/String;)V
at com.google.firebase.auth.FirebaseCredentials$CertCredential.<init>(FirebaseCredentials.java:273)
at com.google.firebase.auth.FirebaseCredentials.fromCertificate(FirebaseCredentials.java:156)
at com.google.firebase.auth.FirebaseCredentials.fromCertificate(FirebaseCredentials.java:130)
at com.google.firebase.auth.FirebaseCredentials$fromCertificate.call(Unknown Source)
at eu.long1.jwnotes.gradleplugins.UploadTask.action(UploadTask.groovy:31)
任务是这样的:
class UploadTask extends DefaultTask {
String message = "Huray!"
@TaskAction
def action() {
String a = "private-key"
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredential(FirebaseCredentials.fromCertificate(new ByteArrayInputStream(a.getBytes("UTF-8"))))
.setDatabaseUrl("https://jwnotes.firebaseio.com/")
.build()
FirebaseApp.initializeApp(options)
FirebaseDatabase.getInstance().getReference().child("alfa-gradle").setValue(message)
}
}
我在尝试申请 运行 任务时遇到错误。
更新
这是我的插件gradle文件:
plugins {
id 'groovy'
id 'maven'
}
group 'eu.long1.jwnotes.gradleplugins'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
compile gradleApi()
compile localGroovy()
}
dependencies {
compile 'com.google.firebase:firebase-admin:5.3.1'
compile 'org.json:json:20160810'
}
sourceCompatibility = 1.8
jar {
into('lib') {
from 'lib'
}
}
您的运行时环境正在选择与 Firebase SDK 不兼容的另一个版本的 org.json:json
库。您需要确保它使用正确版本的 json library。这通常需要检查依赖树,并对一些不必要的依赖项进行显式排除。
更新
以下对我有用:
buildscript {
repositories {
maven {
mavenCentral()
url uri('repo')
}
}
dependencies {
classpath group: 'net.hkj', name: 'gradle-task',
version: '1.0-SNAPSHOT'
}
dependencies {
classpath 'com.google.firebase:firebase-admin:5.3.1'
}
}
task greeting(type: net.hkj.UploadTask) {
}
我在 repo 目录中有包含已编译任务的 jar。我将您的任务实现放入 src/main/groovy/net/hkj/UploadTask.groovy 文件中,并将输出编译到 repo 目录中,然后再调用问候任务。