Gradle中的全局插件

fkvaft9z  于 2022-12-29  发布在  其他
关注(0)|答案(3)|浏览(146)

我使用Gradle作为Scala项目的构建工具,也使用Eclipse进行开发,所以我总是在构建文件中使用apply plugin: 'eclipse'
是否还有全局定义apply plugin的方法?SBT已经有了such a feature。我之所以需要它,是因为使用我的项目的其他开发人员可能不使用Eclipse,而是使用另一个IDE,他们将不得不根据自己的需要更改构建脚本。如果有全局配置文件,人们可以在其中放置个人配置,而不会与其他配置冲突。

e4yzc0pl

e4yzc0pl1#

你可以把它放入~/.gradle/init.gradle

rootProject.allprojects {
    apply plugin: "eclipse"
}

这种方法的缺点是它使构建的可重复性降低,人们现在需要在他们的init.gradle中添加一些东西来完成构建工作(的某些方面),因此,我建议在主构建脚本中应用Eclipse插件;它不会伤害不使用它的人。

qgzx9mmu

qgzx9mmu2#

对于已接受的答案,我还收到了错误消息"根项目尚不可用于构建"。
我使用的是Gradle 7.6,我尝试使用Gradle Test Logger Plugin
下面是适用于我的~/.gradle/init.gradle

initscript {
  repositories {
    gradlePluginPortal()
  }

  dependencies {
    classpath 'com.adarshr:gradle-test-logger-plugin:3.2.0'
  }
}

allprojects {
  apply plugin: com.adarshr.gradle.testlogger.TestLoggerPlugin
}

在全局配置第三方插件时,需要注意以下几点:

  • 您需要将插件作为依赖项添加以使其可用
  • 您需要通过插件的实现类而不是ID来引用插件
  • 不能在实现类两边使用引号

最后两点在Gradle论坛问题Cannot apply plugin by id in init.gradle script中介绍。

如何查找实现类

如果您想知道插件的实现类是什么,下面是我为Gradle Test Logger插件找到的实现类:

  • 在github上打开项目
  • 查看它的build. gradle文件
  • 查找截面gradlePlugin {
  • implementationClass的值
  • for example: https://github.com/radarsh/gradle-test-logger-plugin/blob/29af9282761f003f51d49aa804cc72e35b16c33b/build.gradle#L61
  • 记住 * 不要 * 复制报价:)
vkc1a9a2

vkc1a9a23#

你可以在buildSrc中创建一个build.gradle来实现你的自定义逻辑,只是不要将它签入版本控制中。要将它应用到多个项目,你可以创建一个中心buildSrc目录,并在你想应用它的项目中创建符号链接。

相关问题