【问题标题】:how I deploy rest service extension using gradle?如何使用 gradle 部署休息服务扩展?
【发布时间】:2021-01-13 00:36:28
【问题描述】:

休息服务:http://host:8000/v1/config/resources/removeCollection?put:database=string&put:uris=string*

我想使用 gradle 在 MarkLogic 中部署这个 REST service extension。我该如何部署它?

【问题讨论】:

    标签: gradle build.gradle marklogic


    【解决方案1】:

    我建议查看ml-gradle。您可以通过添加几行轻松地将其连接到 gradle 中,最重要的是:

    plugins { id "com.marklogic.ml-gradle" version "4.0.4" }
    

    如自述文件中所述,您可以选择调用mlNewProject 任务,这将为您提供典型 ml-gradle 项目的有用脚手架结构。

    ML-gradle 让您可以访问各种任务,包括一项名为 mlLoadModules 的任务,用于部署源代码和其余扩展。还有一个用于删除任何数据库中的集合的内置任务,称为mlDeleteCollections。您可以查看Task-reference 以了解所有任务,或者直接运行gradle tasks

    HTH!

    【讨论】:

    • 其实我加了名字(删除收藏)只是一个例子。请阅读上面的cmets
    【解决方案2】:

    如果您已经在使用ml-gradle,您可以将实现的接口添加到marklogic\src\main\ml-modules\services 并使用mlLoadModules 任务进行部署。作为脚手架一部分的mlCreateResource 任务也会在marklogic\src\main\ml-modules\services\metadata 中添加元数据。

    【讨论】:

    • 在'src\main\ml-modules\root\services'中,我保留了我的休息扩展服务example.xqy和在gradle.properties中我保留了resourceName=example resourceType=xqy 但是当我运行任务时deploy(dependsOn: [ mlDeleteModuleTimestampsFile, mlDeploy, mlLoadSchemas, applyParameters, loadCpfModules,mlCreateResource, initSchemas]) {} 它正在这个位置 'src\main\ml-modules\services' 和 example.xqy 创建 example.xqy 和元数据包含包含所有方法的默认结构以及未在模块数据库中创建的服务扩展 example.xqy
    • 使用 gradle 版本:id 'com.marklogic.ml-gradle' 版本 '3.17.0'
    • 如何将参数 ?put:database=string&put:uris=string* 与其他扩展服务一起传递
    • 我几乎可以肯定您可以在名为 metadata 的子文件夹中提供元数据,文件名为 {extension}.xml,因此 src/main/ml-modules/services/example.xqy(没有 root/! ) 和 src/main/ml-modules/services/metadata/example.xml。元数据包含如下所述的内容:stackoverflow.com/a/41860941/918496
    【解决方案3】:

    插件 gradle 调用 REST API 的两种简单方法:

    方法一: 如果你还没有Project

    1. 创建一个gradle.properties 文件,在其中定义四个参数:hostmlUsernamemlPasswordRestPort
    2. 在同一文件夹中创建一个build.gradle 文件:
    plugins { 
        id "com.marklogic.ml-gradle" version "4.0.4" 
    }
    
    task FCdeleteCollections(type: com.marklogic.gradle.task.datamovement.DeleteCollectionsTask) {
    ………………..
      collections = ["{collection-name}"]
    }
    
    1. 调用 gradle 任务:
    [root@ ~] # gradle FCdeleteCollections
    

    方法二: 如果你已经搭建好了Project,在我看来,像这样调用一次性删除任务会更安全:

    [root@ ~] # gradle -Pdatabase={db-name} mlDeleteCollections -Pcollections={collection-name}
    

    我的偏好是通过Java API调用这样的任务| DMSDK。

    【讨论】:

      猜你喜欢
      • 2021-03-10
      • 1970-01-01
      • 2020-02-15
      • 2017-10-23
      • 2016-12-01
      • 2012-04-02
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多