我有一个多项目 build.gradle: https://gist.github.com/iva-nova-e-katerina/7c72399ede83b5f78dbae19582974f35
该脚本失败并出现错误:
> Plugin with id 'com.github.blindpirate.osgi' not found.
Run Code Online (Sandbox Code Playgroud)
为什么?也许 buildscript {} 应该在 allprojects 之外?如何正确地将 gradle 插件添加到多项目中?
小智 6
正如您所建议的,您可以通过buildscript移至allprojects. 例如
buildscript {\n repositories {\n maven {\n url "https://plugins.gradle.org/m2/"\n }\n }\n dependencies {\n classpath "gradle.plugin.com.github.blindpirate:gradle-legacy-osgi-plugin:0.0.4"\n }\n}\n\nsubprojects {\n apply plugin: "com.github.blindpirate.osgi"\n}\nRun Code Online (Sandbox Code Playgroud)\nGradle 文档解释了其工作原理:
\n\n\n对于多项目构建,使用 project\xe2\x80\x99s\nbuildscript() 方法声明的依赖项可用于其所有子项目的构建脚本。
\n
当有人在官方论坛上提出类似问题时,Gradle 也推荐了这种方法。
\n现在回答您的问题如何正确地将 gradle 插件添加到多项目中?。有一个更好的方法来应用gradle-legacy-osgi-plugin插件,即使用插件 DSL,例如
\nplugins {\n id "com.github.blindpirate.osgi" version "0.0.6"\n}\nRun Code Online (Sandbox Code Playgroud)\n与您当前使用的语法相比,使用插件 DSL 具有一些显着的优势,因此通常是推荐的方法。apply
subprojects由于您正在使用多项目设置,因此插件 DSL 将与您当前使用的语法不兼容。我建议采用以下方法之一:
apply false避免插件应用到根项目。该文档有一个完整的示例。plugins {\n id "com.github.blindpirate.osgi" version "0.0.6" apply false\n}\nRun Code Online (Sandbox Code Playgroud)\n不鼓励使用allprojectsandsubprojects语法,因为它将项目耦合在一起,从而导致并行构建执行等功能出现问题。使用上述建议可以帮助您避免这种旧语法。
| 归档时间: |
|
| 查看次数: |
3659 次 |
| 最近记录: |