如何让Gradle插件设置插件jar的依赖项?

如何让Gradle插件设置插件jar的依赖项?,gradle,gradle-plugin,Gradle,Gradle Plugin,我正在创建一个JDiff插件。由于它本质上是一个Javadoc任务,因此我将: 但我希望插件能代表用户完成这项工作 到目前为止,插件的apply方法有: project.configurations { jDiffDoclet } final xmlNewerTask = getJDiffTask(project).doFirst { options.with { docletpath = project.configurations.jDiffDoclet.files.a

我正在创建一个JDiff插件。由于它本质上是一个Javadoc任务,因此我将:

但我希望插件能代表用户完成这项工作

到目前为止,插件的
apply
方法有:

project.configurations {
  jDiffDoclet
}

final xmlNewerTask = getJDiffTask(project).doFirst {
  options.with {
      docletpath = project.configurations.jDiffDoclet.files.asType(List)
      doclet = 'jdiff.JDiff'
  }
}

不知何故,插件需要引用自己的jar。或者,最终,真正需要的是能够设置
docletpath
,但这仍然需要引用插件自己的jar。

如果插件正确添加到项目中并且正确解析,您可以使用以下方法在gradle缓存中获得其jar位置的路径:

project.buildscript.configurations.classpath.find{it.name == 'foo-plugin-name-1.0.0-SNAPSHOT.jar' }

在您的插件
apply()
方法中,您不能执行
project.getConfigurations.create()
configuration.getDependencies.add
?传递到
add
的确切内容是什么?它是如何引用自己的jar文件的?@RaGe,我在问题中添加了更多信息。插件必须知道jar的名称,包括它的版本。有没有办法通过
DefaultPluginManager
获取这些信息?哦,OTOH,与其测试
名称
上的精确匹配,不如测试
startsWith
(尽管这可能会得到太多点击)。我想这是在你自己的插件中,所以你应该知道名称?您可以使用
包含
来绕过版本,而不是使用精确匹配。。希望您的用户不会将同一插件的多个版本添加到其buildscript类路径:)ref:many hits除了StartWith中的版本外,您应该使用完整的插件名称,因此它只与您的插件匹配。如果您仍然担心,您可以使用findAll并对多个匹配发出警告
project.buildscript.configurations.classpath.find{it.name == 'foo-plugin-name-1.0.0-SNAPSHOT.jar' }