【发布时间】:2016-06-28 16:45:47
【问题描述】:
我有一个项目有两个 gradle 文件:build.gradle 和 myPlugin.gradle
myPlugin.gradle 实现了插件接口。该插件还依赖于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 存储库和依赖项
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 部分(带有适当的存储库部分)? -
我确实在 myPlugin.gradle 中添加了 buildscript 部分,但仍然有同样的错误? main build.gradle 和 myPlugin.gradle 中的依赖关系之间是否存在关系?
标签: gradle