ML Gradle task.Server.Eval.Task установка переменных с помощью xquery - PullRequest
1 голос
/ 27 марта 2020

Я использую ml-gradle для запуска блока XQuery для обновления базы данных MarkLogi c. Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно заключить весь код в кавычки, но поскольку сам код содержит кавычки, я сталкиваюсь с некоторыми ошибками при попытке объявить переменные, например let $config. Кто-нибудь знает способ обойти это? Я думал, что смогу объединить весь код в одну большую строку, чтобы он игнорировал первую и последнюю цитату.

task addCron(type: com.marklogic.gradle.task.ServerEvalTask) {
  xquery = "xquery version \"1.0-ml\";\n" +
          "import module namespace admin = \"http://marklogic.com/xdmp/admin\" at \"/MarkLogic/admin.xqy\";\n" +
          "declare namespace group = \"http://marklogic.com/xdmp/group\";\n" +
          " let $config := admin:get-configuration()\n" +

Он взрывается, когда пытается объявить $ config в качестве переменной. С ошибкой:

> Could not get unknown property 'config' for task ':

Вот пример, который работает

task setSchemasPermissions(type: com.marklogic.gradle.task.ServerEvalTask) {
  doFirst {
    println "Changing permissions in " + mlAppConfig.schemasDatabaseName + " for:"
  }
  xquery = "xdmp:invoke('/admin/fix-permissions.xqy', (), map:entry('database', xdmp:database('" + mlAppConfig.schemasDatabaseName + "')))"
}

Вот некоторая документация для ServerEvalTask: https://github.com/marklogic-community/ml-gradle/wiki/Writing-your-own-task

1 Ответ

0 голосов
/ 27 марта 2020

Я подозреваю, что вы используете какой-то механизм шаблонов строк в Groovy / Gradle. Попробуйте также экранировать знак $.

Обратите внимание, что в коде XQuery можно использовать как одинарные, так и двойные кавычки.

HTH!

...