我不明白Gradle插件阻止
apply plugin: 'someplugin1' apply plugin: 'maven'
另一个是:
plugins { id 'org.hidetake.ssh' version '1.1.2' }
在第一块中,我们有一些插件名称。在第二个包和版本中。我不知道我应该在哪里使用第一块,什么时候使用第二块。
u2nhd7ah1#
plugins块是应用插件的较新方法,它们必须在Gradle plugin repository中可用。apply方法是将插件添加到您的构建中的较旧的、但更灵活的方法。
plugins
apply
新的plugins方法不适用于多项目配置(subprojects、allprojects),但将适用于每个子项目的生成配置。
subprojects
allprojects
我认为随着功能的发展,plugins配置方法将取代旧的方法,但在这一点上,两者都可以同时使用。
enyaitl32#
正如@cjstehno已经提到的,apply plugin是您应该避免的遗留方法。随着插件DSL的引入,用户应该没有什么理由使用传统的插件应用方法。它被记录在这里,以防构建作者由于当前工作方式的限制而不能使用插件DSL。
apply plugin
使用新的plugins block方法,您可以添加插件,并使用可选参数apply控制何时应用该插件:
plugins block
plugins { id «plugin id» version «plugin version» [apply «false»] }
在希望在plugins块中应用已添加但未应用的插件的情况下,您仍然可以使用传统方法。例如,在主项目中添加了插件xyz,但没有应用,并且应该仅在子项目subPro中应用它:
xyz
subPro
plugins { id "xyz" version "1.0.0" apply false } subprojects { subproject -> if (subproject.name == "subPro") { apply plugin: 'xyz' } }
请注意,您不再需要该版本。该版本在plugins块中是必需的,除非您使用的是某个Core Gradle插件,如java、scala、...
java
scala
在尝试创建Spring Boot应用程序时,我花了一些时间了解其中的区别,这就是为什么我在一段时间后再次回答这个问题。以下使用Spring Boot plugin的示例对我帮助很大:
Spring Boot
当前应使用的内容:
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"
qoefvg9y3#
现在(在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
km0tfn4u4#
我想指出的是,插件并不需要远程发布才能使用!它也可以是一个“未发布”的本地可用插件(无论是约定插件还是其他插件)。
如果您希望引用这样一个未发布的本地可用插件,您必须将其所谓的“构建”包括在所需的组件/构建中(通过settings.gradle(.kts)文件标识),如下所示:
settings.gradle(.kts)
pluginManagement { includeBuild '<path-to-the-plugin-dir-containing-the-settings-file>' }
在此之后,可以通过其pluginId使用plugins {}-dsl块内的本地插件。
pluginId
plugins {}
gtlvzcf85#
这是使用Gradle插件的两种不同方式。
应用插件方式:首先从根build.gradle解析您需要的插件,如下:
buildscript { repositories { // other repositories... mavenCentral() } dependencies { // other plugins... classpath 'com.google.dagger:hilt-android-gradle-plugin:2.44' }
然后在你的安卓Gradle模块的build.gradle中应用这个插件:
apply plugin: 'com.android.application' apply plugin: 'com.google.dagger.hilt.android'
插件方式:组合resovle并应用于您的根build.gradle中的任何位置,如:
plugins { // other plugins... id 'com.google.dagger.hilt.android' version '2.44' apply false }
plugins { // other plugins... id 'com.android.application' id 'com.google.dagger.hilt.android' } android { // ... }
5条答案
按热度按时间u2nhd7ah1#
plugins
块是应用插件的较新方法,它们必须在Gradle plugin repository中可用。apply
方法是将插件添加到您的构建中的较旧的、但更灵活的方法。新的
plugins
方法不适用于多项目配置(subprojects
、allprojects
),但将适用于每个子项目的生成配置。我认为随着功能的发展,
plugins
配置方法将取代旧的方法,但在这一点上,两者都可以同时使用。enyaitl32#
正如@cjstehno已经提到的,
apply plugin
是您应该避免的遗留方法。随着插件DSL的引入,用户应该没有什么理由使用传统的插件应用方法。它被记录在这里,以防构建作者由于当前工作方式的限制而不能使用插件DSL。
使用新的
plugins block
方法,您可以添加插件,并使用可选参数apply
控制何时应用该插件:在希望在
plugins
块中应用已添加但未应用的插件的情况下,您仍然可以使用传统方法。例如,在主项目中添加了插件xyz
,但没有应用,并且应该仅在子项目subPro
中应用它:请注意,您不再需要该版本。该版本在
plugins
块中是必需的,除非您使用的是某个Core Gradle插件,如java
、scala
、...在尝试创建
Spring Boot
应用程序时,我花了一些时间了解其中的区别,这就是为什么我在一段时间后再次回答这个问题。以下使用Spring Boot
plugin的示例对我帮助很大:当前应使用的内容:
Gradle 2.1之前使用的内容:
qoefvg9y3#
现在(在Gradle 6中),您可以为插件指定存储库名称,而无需使用构建脚本。在settings.gradle中,我们可以添加插件pluginManagement
参考文献:https://docs.gradle.org/current/userguide/plugins.html#sec:custom_plugin_repositories
km0tfn4u4#
我想指出的是,插件并不需要远程发布才能使用!它也可以是一个“未发布”的本地可用插件(无论是约定插件还是其他插件)。
如果您希望引用这样一个未发布的本地可用插件,您必须将其所谓的“构建”包括在所需的组件/构建中(通过
settings.gradle(.kts)
文件标识),如下所示:在此之后,可以通过其
pluginId
使用plugins {}
-dsl块内的本地插件。gtlvzcf85#
这是使用Gradle插件的两种不同方式。
应用插件方式:首先从根build.gradle解析您需要的插件,如下:
然后在你的安卓Gradle模块的build.gradle中应用这个插件:
插件方式:组合resovle并应用于您的根build.gradle中的任何位置,如:
然后在你的安卓Gradle模块的build.gradle中应用这个插件: