Я использую 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