我需要在构建脚本本身内设置ml-gradle属性(mlModulesDatabaseName)。我的印象是,实现此目标的方法是使用额外的模块扩展:
ext {
mlModulesDatabaseName = 'Modules'
}
这似乎将值放置在project.properties映射中,就像从gradle.properties中读取值一样,但是当我尝试运行mlReloadModules任务时,它似乎没有针对正确的数据库:>
$ ./gradlew mlReloadModules -Pdev
:mlDeleteModuleTimestampsFile
:mlClearModulesDatabase
Clearing modules database
Logging HTTP response body to assist with debugging: {"errorResponse":{"statusCode":"404", "status":"Not Found", "messageCode":"XDMP-NOSUCHDB", "message":"XDMP-NOSUCHDB: xdmp:database(\"my-app-modules\") -- No such database my-app-modules"}}
Unable to clear database; cause: 404 Not Found
Finished clearing modules database
:mlPrepareRestApiDependencies
:mlLoadModules
:mlReloadModules
BUILD SUCCESSFUL
这可能是不了解gradle如何限制其属性的范围,但是您会认为这会起作用。有关如何实现此目标的任何建议?
答案 0 :(得分:2)
据我所记得,ml-gradle
在作为插件应用后立即读取属性。这意味着此行之后所有对属性的更改
apply plugin: "com.marklogic.ml-gradle"
无效。在应用ext
插件之前,您是否尝试过设置ml-gradle
属性?
编辑: 设置自定义属性的另一种方法是像这样设置它们:
ext {
mlAppConfig {
modulesDatabaseName = 'Modules'
}
}
这在apply plugin
行之后也适用。
答案 1 :(得分:0)
我建议使用gradle属性插件。如果您还没有这样的东西,请把它放在build.gradle文件的顶部:
plugins {
id "net.saliman.properties" version "1.4.6"
id "com.marklogic.ml-gradle" version "3.7.1"
}
一旦安装了saliman属性插件,就可以将开发者特定的属性放在名为gradle-dev.properties
的文件中,并与-PenvironmentName=dev
运行以启用它们。
默认情况下,它将同时查找gradle.properties
和gradle-local.properties
。它将始终读取gradle.properties
和特定于环境的属性文件(如果存在)。后者将覆盖第一个属性。
根据特定的任务,您还可以在build.gradle
内覆盖属性,但是我要避免使用开箱即用的ml-gradle来执行此操作。
HTH!
答案 2 :(得分:0)
我想分享另一种用于在MarkLogic Data Hub Framework(ml-gradle
)项目中运行DHF
任务的方法。在DFH
开发中,有时我需要在登台数据库或最终数据库上运行相同的任务。因此,我使用GradleBuild
任务来包装ml-gradle
任务,并在GradleBuild
任务中设置项目属性。
task myFinalDbTask(type: GradleBuild) {
tasks = ['myMlGradleTask']
startParameter.projectProperties = [
database: mlFinalDbName,
port: mlFinalPort
]
}