我正在创建gradle自定义插件,我的一个任务需要确保将另一个插件应用于同一个项目。因为它将在它之上运行。 我希望我的插件的用户避免设置对另一个插件的显式依赖 - 我想在我的插件中进行。
所以,我希望应用此插件(https://plugins.gradle.org/plugin/org.hidetake.ssh)。这是我的依赖。
我如何创建插件的方式 - 我只是在groovy上创建一个类代码,将它放在buildSrc \ src \ main \ groovy中并在项目中应用groovy插件。所以我的自定义插件在构建阶段可以看到。它有效,我在同一个项目中用这种方式做了很少的其他插件,所以现在没问题。
我已经浏览了其他主题和谷歌相同的问题,但我无法让这项工作适合我。这是我如何应用代码:
void apply(Project project) {
project.buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "org.hidetake:gradle-ssh-plugin:1.1.3"
}
}
project.apply plugin: "org.hidetake.ssh"
...
我收到的错误消息:找不到ID为“org.hidetake.ssh”的插件。 我试图通过gradle api也使用project.repositories.mavenCentral()和project.dependencies.add以及project.apply(插件:'org.hidetake.ssh')然后 - 也不起作用 - 同样的错误消息。试图在project.dependencies.add(“myConfig”,[group:'org.hidetake',名称:'gradle-ssh-plugin',版本:'1.1.3'])中使用长记法 - 没有结果。
感谢是否有人可以指导正确的语法\方式使其正常工作。
答案 0 :(得分:6)
好的,最后我明白了。要解决此问题,您需要执行以下操作:
将插件的依赖声明为 runtime 。像这样:
repositories {
jcenter()
}
dependencies {
runtime 'org.hidetake:gradle-ssh-plugin:2.6.0'
}
在您自己的插件定义中明确应用插件。像这样:
void apply(Project project) {
project.pluginManager.apply('org.hidetake.ssh')
...