запрос плагина на плагин уже в classpath не должен включать версию - PullRequest
0 голосов
/ 05 февраля 2020

Я выполнил поиск в Интернете по запросу «запрос плагина для плагина уже в classpath не должен включать сайт версии: stackoverflow.com» и не нашел ничего такого конкретного. Поиск "запрос плагина для плагина уже в classpath не должен включать версию" (без SO): https://discuss.gradle.org/t/error-plugin-already-on-the-classpath-must-not-include-a-version/31814, где я прочитал в ответах, например:

Я не нашел ссылки на этот вариант использования в документации плагинов Grade.

Ошибка

Файл сборки '/ Users / имя пользователя / github / OpCon / app / build.gradle 'строка: 4 Ошибка разрешения плагина [id:' com. android .application ', версия:' 3.4.1 ']

Запрос плагина для плагина уже в пути к классам не должен включать версию

, отображаемую в IntelliJ IDEA, build.gradle (OpCon):

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.2'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenCentral()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    }
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

app/build.gradle:

plugins {
    id 'com.android.application' version '3.4.1' apply true
}

... and then other stuff

Я не понимаю, classpath 'com. android .tools.build: gradle: 3.5.2', по-видимому, не содержит 'com. android .application' ... "classpath" имеет только одно вхождение если поиск в проекте.

ДОБАВЛЕНО:

Интересно https://maven.google.com/web/index.html Я могу найти 'com. android .tools.build: gradle: 3.5.2 ветвь 'но нет' com. android .application '.

ДОБАВЛЕНО 2: Я скачал (по какой-то причине фактически было загружено довольно много файлов) по команде, взятой отсюда Как я могу загрузить указанный c артефакт Maven в одну командную строку? :

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -DrepoUrl='https://maven.google.com/' -Dartifact='com.android.tools.build:gradle:3.4.1'

нашел путь com.android.tools.build:gradle в файловом менеджере и заглянул туда только jar:

username$ jar tvf /Users/username/.m2/repository/com/android/tools/build/gradle/3.4.1/gradle-3.4.1.jar | grep application
  1115 Wed May 01 20:30:18 MSK 2019 com/android/build/gradle/internal/tasks/ApplicationIdWriterTask$applicationIdSupplier$1.class
    55 Wed May 01 20:29:18 MSK 2019 META-INF/gradle-plugins/com.android.application.properties

Так что есть упоминание gradle plugin com.android.application в банка META-INF.

Файл com.android.application.properties - это один вкладыш: implementation-class=com.android.build.gradle.AppPlugin.

Поиск в Интернете по запросу "класс реализации java" позволяет найти информацию об интерфейсах. В вики https://en.wikipedia.org/wiki/Interface_ (Java) :

Интерфейс в языке программирования Java - это абстрактный тип, используемый для определения поведения, которое должны реализовывать классы .

Так что плагин Gradle может быть интерфейсом? Как я могу копать дальше?

1 Ответ

1 голос
/ 19 февраля 2020

Я столкнулся с той же проблемой, я использовал весеннюю загрузку с плагинами следующим образом:

plugins {
    id 'org.springframework.boot' version '2.2.0.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'
    id 'war'
}

Так как этот плагин присутствовал в одном модуле зависимости, он жаловался на это. Я просто удалил эти зависимости, и это сработало:

plugins {
    id 'java'
    id 'war'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...