如何从另一个插件应用Gradle插件?
我试图将android插件封装在我自己的插件中,但当我尝试应用插件构建时,出现了一个异常:如何从另一个插件应用Gradle插件?,gradle,android-gradle-plugin,Gradle,Android Gradle Plugin,我试图将android插件封装在我自己的插件中,但当我尝试应用插件构建时,出现了一个异常: A problem occurred evaluating root project 'myproj'. > Failed to apply plugin [id 'com.mycomp.build'] > Failed to apply plugin [id 'android-library'] > Plugin with id 'android-library' not
A problem occurred evaluating root project 'myproj'.
> Failed to apply plugin [id 'com.mycomp.build']
> Failed to apply plugin [id 'android-library']
> Plugin with id 'android-library' not found.
以下是我如何在自己的插件实现中应用android插件:
// build.gradle
apply plugin: 'groovy'
version = '1.0'
group = 'com.mycomp'
dependencies {
compile gradleApi()
compile localGroovy()
}
// Build.groovy
package com.mycomp
import org.gradle.api.Plugin
import org.gradle.api.Project
class Build implements Plugin<Project> {
void apply(Project project) {
println 'Hello from com.mycomp.Build'
project.beforeEvaluate {
buildscript.configurations.classpath +=
'com.android.tools.build:gradle:1.0.0-rc1'
}
project.configure(project) {
buildscript.repositories.mavenCentral()
apply plugin: 'android-library'
}
}
}
//build.gradle
应用插件:“groovy”
版本='1.0'
组='com.mycop'
依赖关系{
编译gradi()
编译localGroovy()
}
//Build.groovy
包com.mycop
导入org.gradle.api.Plugin
导入org.gradle.api.Project
类构建实现插件{
无效申请(项目){
打印'Hello from com.mycop.Build'
项目评估前{
buildscript.configurations.classpath+=
'com.android.tools.build:gradle:1.0.0-rc1'
}
项目。配置(项目){
buildscript.repositories.mavenCentral()
应用插件:“android库”
}
}
}
由于某些原因,类路径没有被正确加载,我做错了什么?我想在您想要添加构建脚本的插件依赖项时,已经解决了,因此它不会以这种方式工作。您需要指定要作为脚本依赖项应用的插件 它将以这种方式工作:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0-rc1'
}
}
apply plugin: 'groovy'
apply plugin: Build
version = '1.0'
group = 'com.mycomp'
dependencies {
compile gradleApi()
compile localGroovy()
}
import org.gradle.api.Plugin
import org.gradle.api.Project
class Build implements Plugin<Project> {
void apply(Project project) {
project.configure(project) {
apply plugin: 'android-library'
}
}
}
buildscript{
存储库{
mavenCentral()
}
依赖关系{
classpath'com.android.tools.build:gradle:1.0.0-rc1'
}
}
应用插件:“groovy”
应用插件:构建
版本='1.0'
组='com.mycop'
依赖关系{
编译gradi()
编译localGroovy()
}
导入org.gradle.api.Plugin
导入org.gradle.api.Project
类构建实现插件{
无效申请(项目){
项目。配置(项目){
应用插件:“android库”
}
}
}
现在,找到了
android插件
,但它失败了,因为groovy
plugin之前已经应用过,并且存在冲突 使用项目的PluginManager
。例如,java
插件如下:
public类WarPlugin实现插件{
// ...
公开作废申请(最终项目){
project.getPluginManager().apply(org.gradle.api.plugins.JavaPlugin.class);
// ...
}
// ...
}
请不要在此处和上方重复发布。当您不拥有要应用的插件时,这是否有效?如果我想使用给定的groupId/版本应用第三方插件,该怎么办?我只是将它声明为插件项目的常规依赖项吗?我想是的。只要你能导入插件类,你就可以了。