Невозможно использовать внешние зависимости в реализации пользовательского плагина Gradle - PullRequest
0 голосов
/ 01 июля 2019

При попытке использовать внешние зависимости внутри настраиваемого подключаемого модуля Gradle, я не могу ни импортировать, ни использовать их.

Я пытался указать как в сценарии сборки, так и в нормальных зависимостях закрытие моих зависимостей. Я использую Gradle 5.5 (скрипт-обертку) и использую метод buildSrc для написания собственного плагина gradle.

// Necessary if loading custom plugins
apply plugin: 'java-gradle-plugin'

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.google.code.gson:gson:2.8.5'
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'

group 'com.foo'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

gradlePlugin {
    plugins {
        greeterPlugin {
            id = 'com.foo.dbcreation-plugin'
            implementationClass = 'com.foo.dbcreation.DbCreation'
        }
    }
}

dependencies {
    compile 'com.google.code.gson:gson:2.8.5'
}

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Я понял, в чём моя проблема.Для проектов, создаваемых с использованием каталога buildSrc, необходимо, чтобы файл build.gradle находился в этом каталоге, а не в корневом каталоге проекта (где обычно находится build.gradle).Я просто преобразовал проект в обычный gradle-проект, и он прекрасно работает.

0 голосов
/ 02 июля 2019

Здесь я вижу довольно много проблем.

  1. buildscript не контролирует зависимости для реализации вашего плагина.
  2. Используйте блок plugins {} DSL для применения плагинов. Это предпочтительный способ: https://docs.gradle.org/current/userguide/plugins.html#sec:plugins_block
  3. Следует использовать implementation над compile, поскольку compile устарело, как указано в https://docs.gradle.org/current/userguide/java_plugin.html#tab:configurations

С учетом сказанного ваш файл Gradle должен выглядеть следующим образом:

plugins {
    id 'java-gradle-plugin'
    id 'eclipse'
    id 'idea'
}

group 'com.foo'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

gradlePlugin {
    plugins {
        greeterPlugin {
            id = 'com.foo.dbcreation-plugin'
            implementationClass = 'com.foo.dbcreation.DbCreation'
        }
    }
}

dependencies {
    implementation 'com.google.code.gson:gson:2.8.5'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...