2016-09-14 5 views
3

Я создаю пользовательский плагин gradle, и одна из моих задач должна быть уверена, что другой плагин применяется к тому же проекту. Потому что он будет работать поверх него. Я хочу, чтобы пользователи моего плагина не настраивали явную зависимость от другого плагина - я хочу сделать это внутри своего плагина.Gradle: добавить зависимость плагина от другого плагина

Итак, я хочу использовать этот плагин (https://plugins.gradle.org/plugin/org.hidetake.ssh). Это моя зависимость.

Способ создания плагина - я просто создаю код класса на groovy, поместите его в buildSrc \ src \ main \ groovy и примените плавный плагин в проекте. Таким образом, мой настраиваемый плагин виден градиенту на этапе сборки. Он работает, у меня есть несколько других плагинов, сделанных таким образом для того же проекта, поэтому на данный момент это нормально.

Я просмотрел другие темы и google по тому же вопросу, но я не могу сделать эту работу для меня. Это, как я применяю код:

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" 
    ... 

Сообщение об ошибке я получил: плагин с идентификатором «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']) - нет результата.

Цените, если кто-то может руководствоваться правильным синтаксисом \ способ заставить его работать.

ответ

2

Хорошо, наконец, я понял. Чтобы решить проблему, вам необходимо сделать следующее:

  1. Место build.gradle в каталоге buildSrc.
  2. Заявить зависимость для плагина как runtime. Например:

    repositories { 
        jcenter() 
    } 
    dependencies { 
        runtime 'org.hidetake:gradle-ssh-plugin:2.6.0' 
    } 
    
  3. Применить плагин явно в своем собственном определении плагина. Как это:

    void apply(Project project) { 
        project.pluginManager.apply('org.hidetake.ssh') 
    ... 
    
+0

Это прекрасно работает. Я использую его для применения «com.github.ben-manes: gradle-versions-plugin: 0.17.0» для всех моих проектов (все они используют общий базовый плагин для других зависимостей и задач) для автоматической проверки обновлений зависимостей , Большое спасибо! –

Смежные вопросы