1

我是 gradle 新手,需要编写一个任务来安排 MarkLogic 备份。

因此,我想调用一个 XQuery 模块,该模块使用配置 XML 来获取备份的详细信息。

所以我尝试了这个:

task mlBackupTask(type: com.marklogic.gradle.task.ServerEvalTask) {
  def client = hubConfig.newStagingClient()
  println client
  //DatabaseClient client = DatabaseClientFactory.newClient(host,portno,new DatabaseClientFactory.DigestAuthContext(username, password))
  ServerEvaluationCall invoker = client.newServerEval();
  String result = invoker.modulePath("/admin/create-backup.xqy").addVariable("config-name", "dev").evalAs(String.class);
}

我都试过了:

  • hubConfig.newStagingClient()
  • DatabaseClientFactory.newClient(host,portno,new DatabaseClientFactory.DigestAuthContext(username, password))

这不起作用,只是给出这个错误:

任务“:mlBackupTask”执行失败。java.lang.NullPointerException(没有错误信息)

有人可以帮忙吗?

4

1 回答 1

2

从https://github.com/marklogic-community/ml-gradle/wiki/Writing-your-own-task的文档开始。“hubConfig.newStagingClient()” 仅在您使用 DHF 时才有效,因为 hubConfig 特定于 DHF。

另外,我认为根据您的代码,您真正想要的是使用 MarkLogicTask。ServerEvalTask​​ 的目的是允许您编写单行 JS 或 XQuery 代码。给定一个 DatabaseClient,看起来您想要编写多行代码。如果是这样,请使用 MarkLogicTask,并将您的代码放在“doLast”块中,如文档中所示。

于 2021-12-07T12:09:06.817 回答