我不明白gradle插件块
apply plugin: 'someplugin1'
apply plugin: 'maven'
另一个是:
plugins {
id 'org.hidetake.ssh' version '1.1.2'
}
在第一个块中,我们有一些插件名称。第二个包和版本。我不知道我应该在哪里用第一块,什么时候用第二块。
我不明白gradle插件块
apply plugin: 'someplugin1'
apply plugin: 'maven'
另一个是:
plugins {
id 'org.hidetake.ssh' version '1.1.2'
}
在第一个块中,我们有一些插件名称。第二个包和版本。我不知道我应该在哪里用第一块,什么时候用第二块。
当前回答
不过,我想指出的是,一个插件不需要远程发布才能使用它! 它也可以是一个未发布的本地可用插件(无论是约定插件还是其他插件)。
如果有人想引用这样一个未发布的本地可用插件, 你必须将它所谓的“构建”包含在所需的组件/构建中(通过settings.gradle(.kts)-file识别),如下所示:
pluginManagement {
includeBuild '<path-to-the-plugin-dir-containing-the-settings-file>'
}
完成之后,可以通过pluginId在plugins {}-DSL-block中使用本地插件。
其他回答
正如@cjstehno已经提到的,apply插件是一个遗留的方法,你应该避免。
随着插件DSL的引入,用户应该没有什么理由使用应用插件的传统方法了。这里记录了它,以防构建作者由于当前工作方式的限制而无法使用插件DSL。
使用新的plugins块方法,你可以添加一个插件,并使用可选参数apply来控制何时应用它:
plugins {
id «plugin id» version «plugin version» [apply «false»]
}
如果你想在插件块中应用一个已经添加但尚未应用的插件,你仍然可以使用遗留方法。例如,在主项目中添加了一个插件xyz,但没有应用,它应该只应用在子项目subPro中:
plugins {
id "xyz" version "1.0.0" apply false
}
subprojects { subproject ->
if (subproject.name == "subPro") {
apply plugin: 'xyz'
}
}
注意,您不再需要这个版本了。除非你使用的是Core Gradle插件之一,如java, scala,…
在尝试创建Spring Boot应用程序时,我花了一些时间来理解其中的区别,这就是为什么过了一段时间后我又回答了这个问题。下面是使用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"
plugins块是应用插件的新方法,它们必须在Gradle插件存储库中可用。apply方法是向构建中添加插件的较老但更灵活的方法。
新的插件方法不能在多项目配置(子项目,所有项目)中工作,但可以在每个子项目的构建配置中工作。
我认为随着功能的发展,插件配置方法将取代旧的方法,但在这一点上,这两种方法都可以同时使用。
现在(在Gradle 6中),你可以不使用构建脚本就为插件命名存储库。 在设置。gradle,我们可以添加插件pluginManagement
pluginManagement {
repositories {
maven {
url '../maven-repo'
}
gradlePluginPortal()
ivy {
url '../ivy-repo'
}
}
}
参考:https://docs.gradle.org/current/userguide/plugins.html秒:custom_plugin_repositories
如果插件需要一个版本,那么将版本号放在设置中的pluginManagement块中会更安全。Gradle文件,而不是插件块。
我说的更安全是指你不会遇到这样的错误,比如插件请求类路径上已经存在的插件不能包含一个版本。如果你将一个项目包含到另一个使用相同插件的项目中,并且你的插件版本在plugins块中,就会发生这种情况。
所以与其说:
plugins {
id 'pl.allegro.tech.build.axion-release' version '1.10.3'
}
Do:
plugins {
id 'pl.allegro.tech.build.axion-release'
}
然后在设置中。gradle文件:
pluginManagement {
plugins {
id 'pl.allegro.tech.build.axion-release' version '1.10.3'
}
}
这是使用Gradle插件的两种不同方式。
应用插件的方式:首先从根构建中解决你需要的插件。gradle:
buildscript {
repositories {
// other repositories...
mavenCentral()
}
dependencies {
// other plugins...
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.44'
}
然后在构建中。你的Android gradle模块应用插件:
apply plugin: 'com.android.application'
apply plugin: 'com.google.dagger.hilt.android'
插件方式:结合解析和应用在你的根构建。gradle:
plugins {
// other plugins...
id 'com.google.dagger.hilt.android' version '2.44' apply false
}
然后在构建中。你的Android gradle模块应用插件:
plugins {
// other plugins...
id 'com.android.application'
id 'com.google.dagger.hilt.android'
}
android {
// ...
}