Передача параметров на стадию corb uri с использованием ml-gradle - PullRequest
1 голос
/ 12 марта 2020

Я использую ml-gradle с corb2 2.4.5 и Marklogi c 9.0.5.

Я пытаюсь передать параметр corb при запуске задачи gradle. Я передал параметр в

-DURIS-MODULE.id="sf"

В моем модуле xquery у меня есть

declare variable $id as xs:string external;

Процесс corb выполняется, но он не устанавливает переменную id. Что мне нужно изменить, чтобы сделать эту работу?

1 Ответ

1 голос
/ 12 марта 2020

Все системные свойства должны быть установлены и переданы вашему заданию CoRB при выполнении задачи CoRB ml-gradle.

Я подозреваю, что вы, возможно, используете старую версию ml-gradle, или может быть что-то еще, что в вашей работе.

Я подтвердил, что могу передать внешнюю переменную URIS-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 при запуске:

https://github.com/marklogic-community/ml-gradle/blob/master/src/main/groovy/com/marklogic/gradle/task/CorbTask.groovy#L102

Map options = buildCorbOptions()
//CoRB2 will evaluate System properties for options
systemProperties(options)

super.exec()

Метод buildCorbOptions() https://github.com/marklogic-community/ml-gradle/blob/master/src/main/groovy/com/marklogic/gradle/task/CorbTask.groovy#L121

  /**
  * 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
  }

вызывает метод collectSystemProperties():

  /**
  * 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
  }
...