应用gradle插件有什么不同

时间:2015-09-02 12:12:00

标签: groovy gradle gradle-plugin

我不明白gradle插件块

apply plugin: 'someplugin1'
apply plugin: 'maven'

和另一个:

plugins {
   id 'org.hidetake.ssh' version '1.1.2'
}

在第一个块中我们有一些插件名称。在第二个包和版本。我不明白我应该在哪里使用第一块和第二块。

3 个答案:

答案 0 :(得分:96)

plugins块是应用插件的新方法,它们必须在Gradle plugin repository中可用。 apply方法是一种更老,更灵活的方法,可以为您的构建添加插件。

新的plugins方法在多项目配置(subprojectsallprojects)中不起作用,但可以用于每个子项目的构建配置。

我认为随着功能的进步,plugins配置方法将超越旧方法,但此时两者都可以同时使用。

答案 1 :(得分:23)

正如@cjstehno已经提到的,apply plugin是一种你应该避免的传统方法。

  

随着插件DSL的推出,用户应该没有理由使用传统方法来应用插件。这里记录了如果构建作者由于其当前工作方式的限制而无法使用插件DSL。

使用新的plugins block方法,您可以使用可选参数apply添加插件并控制何时应用它:

plugins {
    id «plugin id» version «plugin version» [apply «false»]
}

在您希望在plugins块中应用已添加但未应用的插件的情况下,您仍会使用旧方法。例如,在主项目中添加了一个插件xyz但未应用,它应仅应用于子项目subPro

plugins {
  id "xyz" version "1.0.0" apply false
}

subprojects { subproject ->
    if (subproject.name == "subPro") {
        apply plugin: 'xyz'
    }
}

请注意,您不再需要该版本。 plugins块中需要该版本,除非您使用其中一个Core Gradle插件,例如javascala,...

在尝试创建Spring Boot应用程序时,我花了一些时间来理解差异,这就是为什么我会在一段时间后再次回答这个问题。以下使用Spring Boot plugin的示例帮助了我很多:

目前应该使用什么:

plugins {
  id "org.springframework.boot" version "2.0.1.RELEASE"
}

在Gradle 2.1之前使用了什么:

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "org.springframework.boot:spring-boot-gradle-plugin:2.0.1.RELEASE"
  }
}

apply plugin: "org.springframework.boot"

答案 2 :(得分:2)

现在(在Gradle 6中),您可以为插件指定存储库名称,而无需使用build scipt。 在settings.gradle中,我们可以添加插件pluginManagement

true

参考:device information can be exposed