应用Gradle插件有什么不同

bksxznpy  于 2022-10-07  发布在  其他
关注(0)|答案(5)|浏览(201)

我不明白Gradle插件阻止

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

另一个是:

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

在第一块中,我们有一些插件名称。在第二个包和版本中。我不知道我应该在哪里使用第一块,什么时候使用第二块。

u2nhd7ah

u2nhd7ah1#

plugins块是应用插件的较新方法,它们必须在Gradle plugin repository中可用。apply方法是将插件添加到您的构建中的较旧的、但更灵活的方法。

新的plugins方法不适用于多项目配置(subprojectsallprojects),但将适用于每个子项目的生成配置。

我认为随着功能的发展,plugins配置方法将取代旧的方法,但在这一点上,两者都可以同时使用。

enyaitl3

enyaitl32#

正如@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"
qoefvg9y

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

km0tfn4u

km0tfn4u4#

我想指出的是,插件并不需要远程发布才能使用!它也可以是一个“未发布”的本地可用插件(无论是约定插件还是其他插件)。

如果您希望引用这样一个未发布的本地可用插件,您必须将其所谓的“构建”包括在所需的组件/构建中(通过settings.gradle(.kts)文件标识),如下所示:

pluginManagement {
    includeBuild '<path-to-the-plugin-dir-containing-the-settings-file>'
}

在此之后,可以通过其pluginId使用plugins {}-dsl块内的本地插件。

gtlvzcf8

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
}

然后在你的安卓Gradle模块的build.gradle中应用这个插件:

plugins {
    // other plugins...
    id 'com.android.application'
    id 'com.google.dagger.hilt.android'
}

android {
    // ...
}

相关问题