应用 gradle 插件有什么区别
What the difference in applying gradle plugin
我不明白gradle 插件块
apply plugin: 'someplugin1'
apply plugin: 'maven'
和另一个:
plugins {
id 'org.hidetake.ssh' version '1.1.2'
}
在第一块我们有一些插件名称。在第二个包和版本中。我不明白应该在哪里使用第一个块以及何时使用第二个块。
plugins
块是应用插件的较新方法,它们必须在 Gradle plugin repository 中可用。 apply
方法是向构建中添加插件的较旧但更灵活的方法。
新的 plugins
方法不适用于多项目配置(subprojects
、allprojects
),但适用于每个子项目的构建配置。
我认为随着功能的进步,plugins
配置方法将取代旧方法,但在这一点上,两者可以同时使用。
正如@cjstehno 已经提到的,apply plugin
是您应该避免的遗留方法。
With the introduction of the plugins DSL, users should have little reason to use the legacy method of applying plugins. It is documented here in case a build author cannot use the plugins DSL due to restrictions in how it currently works.
使用新的 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
块中需要该版本,除非您使用核心 Gradle 插件之一,例如 java
、scala
、...
我在尝试创建 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"
现在(在 Gradle 6 中)您可以在不使用构建脚本的情况下为插件指定存储库名称。
在settings.gradle中,我们可以添加插件pluginManagement
pluginManagement {
repositories {
maven {
url '../maven-repo'
}
gradlePluginPortal()
ivy {
url '../ivy-repo'
}
}
}
参考:https://docs.gradle.org/current/userguide/plugins.html#sec:custom_plugin_repositories
我不明白gradle 插件块
apply plugin: 'someplugin1'
apply plugin: 'maven'
和另一个:
plugins {
id 'org.hidetake.ssh' version '1.1.2'
}
在第一块我们有一些插件名称。在第二个包和版本中。我不明白应该在哪里使用第一个块以及何时使用第二个块。
plugins
块是应用插件的较新方法,它们必须在 Gradle plugin repository 中可用。 apply
方法是向构建中添加插件的较旧但更灵活的方法。
新的 plugins
方法不适用于多项目配置(subprojects
、allprojects
),但适用于每个子项目的构建配置。
我认为随着功能的进步,plugins
配置方法将取代旧方法,但在这一点上,两者可以同时使用。
正如@cjstehno 已经提到的,apply plugin
是您应该避免的遗留方法。
With the introduction of the plugins DSL, users should have little reason to use the legacy method of applying plugins. It is documented here in case a build author cannot use the plugins DSL due to restrictions in how it currently works.
使用新的 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
块中需要该版本,除非您使用核心 Gradle 插件之一,例如 java
、scala
、...
我在尝试创建 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"
现在(在 Gradle 6 中)您可以在不使用构建脚本的情况下为插件指定存储库名称。 在settings.gradle中,我们可以添加插件pluginManagement
pluginManagement {
repositories {
maven {
url '../maven-repo'
}
gradlePluginPortal()
ivy {
url '../ivy-repo'
}
}
}
参考:https://docs.gradle.org/current/userguide/plugins.html#sec:custom_plugin_repositories