Marklogic 使用ml-gradle将参数传递到corb-uri阶段

Marklogic 使用ml-gradle将参数传递到corb-uri阶段,marklogic,ml-gradle,marklogic-corb,Marklogic,Ml Gradle,Marklogic Corb,我将ml gradle与corb2.4.5和Marklogic 9.0.5一起使用 我试图在运行gradle任务时向corb传递一个参数。我已在中传递了参数 -DURIS-MODULE.id=“sf” 在我的xquery模块中,我有 将变量$id声明为xs:string-external corb进程运行,但它不设置id变量。我需要做什么改变才能让这一切顺利进行 执行ml gradle CoRB任务时,应设置所有系统属性并将其传递给CoRB作业 我怀疑您可能正在运行一个旧版本的ml gradle

我将ml gradle与corb2.4.5和Marklogic 9.0.5一起使用

我试图在运行gradle任务时向corb传递一个参数。我已在中传递了参数

-DURIS-MODULE.id=“sf”

在我的xquery模块中,我有

将变量$id声明为xs:string-external


corb进程运行,但它不设置id变量。我需要做什么改变才能让这一切顺利进行

执行ml gradle CoRB任务时,应设置所有系统属性并将其传递给CoRB作业

我怀疑您可能正在运行一个旧版本的ml gradle,或者您的工作中可能存在其他问题

我已经验证了可以通过执行以下命令将外部URI-MODULE变量传递到此简化作业:

gradle -DURIS-MODULE.id=2 -DURIS-MODULE="INLINE-XQUERY|declare variable $id external;concat('PROCESS-MODULE.id=',string($id)),1,1|ADHOC" -DPROCESS-MODULE="INLINE-XQUERY|declare variable $id external;xdmp:log(concat('process module id=',$id))|ADHOC" corb
我看到我的应用程序服务器错误日志包括以下行:

2020-03-12 09:23:44.198 Info: process module id=2
ml gradle CoRB任务收集所有系统属性,并在任务运行时将它们传递给CoRB:

buildCorbOptions()
方法


确保使用类型
CorbTask
,而不是Java任务来利用参数处理

使用:

而不是:

task some-corbJAVA(type: Java) {...}

这看起来是正确的。能否更新并添加完整的命令启动?只是猜测一下,也许系统属性是在manager类之后而不是之前设置的?我使用的是gradle,而不是直接从命令行使用Java,因此类顺序不是问题。如果没有人能帮上忙,我将求助于Java命令行调用,您使用的是什么版本的ml gradle?谢谢您的详细回答;这是我见过的将ml gradle与corb结合使用的最好的概述。我更新到了最新的ml gradle,并稍微调整了我的代码;在他们两人之间,这解决了我的问题。
  /**
  * Construct CoRB2 options from the following sources:
  * task variables - lowerCamelCase names that correspond to their CoRB2
  *                  option (i.e. optionsFile => OPTIONS-FILE)
  * project properties - Project properties with the naming convention
  *                      of a 'corb' prefix and CamelCased CoRB2 option name
  *                      (i.e. corbOptionsFile => OPTIONS-FILE)
  * System properties - Any System property with a CoRB2 option name
  *
  * If properties are defined in more than one place, System properties will take
  * precedence over Project properties, which take precedence over task member variables.
  *
  * @return Map of CoRB2 options
  */
  public Map buildCorbOptions() {
    //first, convert legacy task properties and generate options from conventions
    Map options = collectNormalizedOptions()
    //collect all of the corb task options (i.e. threadCount=12)
    options << collectMemberVariables()
    //apply any corb project properties (i.e. -PcorbThreadCount=12)
    options << collectCorbProjectProperties()
    //apply any CoRB2 System properties (i.e. -DTHREAD-COUNT=12)
    options << collectSystemProperties()
    options //return the merged options
  }
  /**
  * Collect all System.properties. This allows for any CoRB option to be set, including those not statically known such
  * as CoRB custom inputs (e.g. URIS-MODULE.foo, PROCESS-MODULE.bar, etc) as well as settings for other libraries, such
  * as xcc.httpCompliant to enable XCCS compatability for XCC.
  * @return all System.properties
  */
  public Map collectSystemProperties() {
    System.properties
  }
task some-corbCorbTask(type: com.marklogic.gradle.task.CorbTask) {...}
task some-corbJAVA(type: Java) {...}