You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Gradle直接执行XQuery脚本而不使用QConsole

实现方式说明

完全可以通过Gradle直接执行XQuery脚本,不需要依赖QConsole,ml-gradle本身提供原生支持,也支持参照MLCP自定义任务的方式实现个性化需求。


方法1:使用ml-gradle内置的mlRunScript任务

这是最简单的实现方式,无需额外开发,直接调用官方内置任务即可:

  • 首先确保项目已经正确集成ml-gradle 3.0及以上版本,绝大多数主流版本均支持该任务
  • 将要执行的XQuery脚本放在项目任意可访问的目录下,执行时指定路径即可
  • 命令行执行格式:./gradlew mlRunScript -PscriptPath=你的脚本相对路径
  • 如果需要给脚本传递外部变量,追加参数:-Pparams=变量名1:值1,变量名2:值2
  • 脚本执行结果会直接打印在Gradle控制台,也可自行配置输出到本地文件

举个使用示例:
假设你有脚本test.xqy内容如下:

xquery version "1.0-ml";
declare variable $userName as xs:string external;
fn:concat("Hello ", $userName)

执行命令为:./gradlew mlRunScript -PscriptPath=./test.xqy -Pparams=userName:MarkLogic


方法2:自定义Gradle任务

如果内置任务无法满足你的需求(比如批量执行多个脚本、和其他任务做依赖绑定、自定义结果处理逻辑等),可以完全参照自定义MLCP任务的方式开发专属任务:

  • 直接复用ml-gradle提供的MarkLogicTask父类即可,不需要额外配置MarkLogic连接参数,会自动读取gradle.properties里的连接配置
  • 自定义任务示例(Gradle Groovy DSL):
task runBatchXQuery(type: com.marklogic.gradle.task.MarkLogicTask) {
    doLast {
        def client = getProject().mlClient
        // 读取本地XQuery脚本内容
        def xqyContent = new File("./batch-script.xqy").text
        // 执行脚本并获取结果
        def result = client.newServerEval()
            .xquery(xqyContent)
            .addVariable("batchSize", 100)
            .addVariable("targetCollection", "temp_data")
            .evalAs(String.class)
        // 自定义结果处理逻辑
        println "批量任务执行完成,返回结果:${result}"
    }
}
  • 任务开发完成后直接执行./gradlew runBatchXQuery即可,也可以配置和其他任务的依赖关系,比如部署完模块后自动执行初始化脚本。

注意事项

  • 脚本默认使用gradle.properties中配置的mlUsername账号权限执行,请确保该账号拥有对应内容库的读写、脚本执行权限
  • 如果要执行已经部署到MarkLogic模块数据库中的XQuery,把上述自定义任务里的.xquery(xxx)替换为.modulePath("模块库内的脚本路径")即可

内容的提问来源于stack exchange,提问作者XCELERENT - I want to dance

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 20:15:02