首页 > 解决方案 > 从 ml-gradle“提供者”项目模式启用可重用的 gradle 任务?

问题描述

ml-gradle中,我们可以创建一个“提供者”项目来捆绑共享的 MarkLogic 资产(模块、模式等)并从其他依赖ml-gradle项目中使用它们。

https://github.com/marklogic-community/ml-gradle/tree/master/examples/dependency-project

我想知道我们是否还可以在provider项目中合并自定义 MarkLogic gradle 任务。或者我们需要创建一个 gradle 插件来启用这样的功能。

https://github.com/marklogic-community/ml-gradle/wiki/Writing-your-own-task

谢谢!

标签: gradlemarklogicml-gradle

解决方案


我认为这是不可能的,因为我相信这些被认为是两种不同的依赖关系。“mlBundle”是ml-gradle定义的项目配置,用户可以定义与该配置相关的依赖,例如marklogic-unit-test。但是可重用的 Gradle 任务被打包为 Gradle 插件,并且插件依赖项与项目的构建脚本相关联,与项目配置分开。

我认为一个合理的比较是 Spring Boot——你可以对 Spring Boot jar 有一个“编译”依赖,以便它包含在你的 Java 应用程序中。另外,您的 Gradle 项目还可以依赖 Spring Boot Gradle 插件来继承“bootRun”和“bootJar”等任务。

因此,对于您的用例,我相信您首先需要一个可以通过 mlBundle 依赖的包,然后您需要一个单独的 Gradle 插件,用户可以选择将其应用于他们的项目。


推荐阅读