在预编译脚本插件中覆盖外部插件版本
Override external plugin version in precompiled script plugin
我正在使用 Gradle 构建工具。我有一个预编译的 Gradle 脚本插件 X,可以说这是一个约定插件。在插件的 build.gradle 中,我定义了对另一个外部插件 Y 的依赖。
插件X:build.gradle:
dependencies {
implementation "com.rivancic.y:y-gradle-plugin:${versionYPlugin}"
}
插件X:gradle.属性
versionYPlugin:1.0.0
然后在我的主项目中,我应用了预编译脚本插件X,我想手动设置外部插件Y的版本,可以吗?我找不到从 A 覆盖插件 Y 版本的方法。
如果我在项目A:gradle.properties 中定义版本
versionYPlugin=1.1.0
没用,还在解决1.0.0版本
如果我想动态设置外部插件版本,还有其他方法吗?
您混淆了项目和构建时间与应用程序时间。
X:build.gradle
是您的插件的构建文件。
在构建 A
可以应用 X
之前,需要构建 X
。
X
的构建是一个完全独立的构建。
您在项目 A
上的项目 属性 与 X
的构建无关,因此无法影响 X
的构建,无论这是否是 [=18] =]、包含构建或独立构建。
如果 X
是 buildSrc
或一个包含的构建,您可以考虑一些方法在构建期间重用 A 的 gradle.properties
,但是您想要从消费者,我想它是独立构建的,或者您可以直接在 X
的构建中更改它。
所以 X
可能是一个独立的构建,当 A
想要应用它时,它已经构建并且有一个元数据文件,其中包含 Y
的版本构建时在 X
中定义。
要使用不同版本的 Y
,您必须确保它位于 A
的构建脚本 class 路径中。例如,您可以执行 plugins { id("com.rivancic.y") version "3.1.0" apply false }
以便它位于 A 的构建脚本 class 路径中并用于代替 X
所依赖的版本。
或者您可以将其定义为 buildSrc
runtimeOnly
依赖项,只是将其放入所有构建脚本的 class 路径。
...
我正在使用 Gradle 构建工具。我有一个预编译的 Gradle 脚本插件 X,可以说这是一个约定插件。在插件的 build.gradle 中,我定义了对另一个外部插件 Y 的依赖。
插件X:build.gradle:
dependencies {
implementation "com.rivancic.y:y-gradle-plugin:${versionYPlugin}"
}
插件X:gradle.属性
versionYPlugin:1.0.0
然后在我的主项目中,我应用了预编译脚本插件X,我想手动设置外部插件Y的版本,可以吗?我找不到从 A 覆盖插件 Y 版本的方法。
如果我在项目A:gradle.properties 中定义版本
versionYPlugin=1.1.0
没用,还在解决1.0.0版本
如果我想动态设置外部插件版本,还有其他方法吗?
您混淆了项目和构建时间与应用程序时间。
X:build.gradle
是您的插件的构建文件。
在构建 A
可以应用 X
之前,需要构建 X
。
X
的构建是一个完全独立的构建。
您在项目 A
上的项目 属性 与 X
的构建无关,因此无法影响 X
的构建,无论这是否是 [=18] =]、包含构建或独立构建。
如果 X
是 buildSrc
或一个包含的构建,您可以考虑一些方法在构建期间重用 A 的 gradle.properties
,但是您想要从消费者,我想它是独立构建的,或者您可以直接在 X
的构建中更改它。
所以 X
可能是一个独立的构建,当 A
想要应用它时,它已经构建并且有一个元数据文件,其中包含 Y
的版本构建时在 X
中定义。
要使用不同版本的 Y
,您必须确保它位于 A
的构建脚本 class 路径中。例如,您可以执行 plugins { id("com.rivancic.y") version "3.1.0" apply false }
以便它位于 A 的构建脚本 class 路径中并用于代替 X
所依赖的版本。
或者您可以将其定义为 buildSrc
runtimeOnly
依赖项,只是将其放入所有构建脚本的 class 路径。
...