我有一个项目有两个gradle文件:build.gradle
和myPlugin.gradle
myPlugin.gradle
实现了 Plugin 接口。该插件还依赖于 osdetector-gradle-plugin
我将这两个 gradle 文件放在一起,然后尝试将 myPlugin 应用到 build.gradle
中,如下所示:
apply from: 'myPlugin.gradle'
然而,在
myPlugin.gradle
文件中出现了以下错误:Plugin with id 'com.google.osdetector' not found
这是myPlugin.gradle
文件的代码:
apply plugin: 'groovy'
apply plugin: 'maven'
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
compile 'com.google.gradle:osdetector-gradle-plugin:1.4.0'
}
import org.gradle.api.tasks.TaskAction
import org.gradle.api.DefaultTask
import org.gradle.api.Plugin
import org.gradle.api.Project
apply plugin: 'com.google.osdetector'
apply plugin: HostingMachineOSPlugin
class HostingMachineOSPlugin implements Plugin<Project>{
void apply(Project project){
project.plugins.apply("com.google.osdetector");
//project.configurations.files('com.google.osdetector')
println project.osdetector.os
/* Extend the project property to have the class HostingMachineOS */
project.ext.HostingMachineOS = HostingMachineOS
}
}
public class HostingMachineOS {
static family = "Unkown"
static def setFamilyName(name){
family = name
}
static def isLinux (){
family == "linux"
}
static def isWindows (){
family == "windows"
}
static def isMacOS(){
family == "osx"
}
}
HostingMachineOS.setFamilyName(osdetector.os)
在
build.gradle
文件中:我只是做了这样的事情:// 定义 buildScript 的 repositories 和 dependencies,然后
apply from: 'myPlugin.gradle'
task dummy{
println HostingMachineOS.isMacOS()
println HostingMachineOS.isLinux()
println HostingMachineOS.isWindows()
}
我该如何解决“找不到id为'com.google.osdetector'的插件”问题?
myPlugin.gradle
找不到 ID 为com.google.osdetector
的插件,也许你应该在你的myPlugin.gradle
中添加一个 buildscript 部分(包括适当的 repositories 部分)? - RaGe