Android Studio Groovy классы, все аннотированные в IDE с "уже существует" - PullRequest
0 голосов
/ 12 марта 2020

Возможно, связано, но решения там не совсем применимы:

  1. IDEA Groovy тестовый класс уже существует
  2. "Класс уже существует "ошибка в IntelliJ для Groovy класса
  3. И возможно: Класс 'myClassName' уже существует в пакете 'myPackageName'

У нас есть Android Проект Studio (v3.4.1) с некоторыми деревьями Groovy src и test. Этот проект представляет собой плагин Gradle, если это имеет значение. Мы используем Gradle 5.4.1. (Хотя другие люди с более поздними выпусками Android Studio и Gradle видят те же проблемы.)

Если мы добавим любой Groovy исходный файл класса в представление редактирования, пока поскольку каталог модуля build/libs содержит jarfile из предыдущего вызова сборки, Android Studio пометит имя класса красной подчеркиванием, а текст при наведении курсора

Класс 'FnordPlugin' уже существует в 'org.clvrmnky.plugin'

Вызов «clean» и последующая синхронизация избавят от аннотаций. Если вы просто создаете классы с помощью «compile», аннотации также не появляются. Только если будет создан jar-файл дистрибутива с классами Plugin, аннотации будут отображаться.

В противном случае AFAICT не повлияет на создание и создание артефактов. Мы используем плагин в других проектах без ошибок.

Соответствующие вопросы и ответы, о которых я упоминаю, говорят о «маркировке» каталогов определенными способами, но это либо уже сделано Android Studio (например, модулем build/lib). каталог помечен как «Исключен» при создании AS), или рекомендация не применяется, поскольку этот каталог не существует. В одном из связанных вопросов и ответов упоминается, что IDE на основе Idea могут генерировать как классы Java, так и Groovy, так что существуют дублирующие классы, так что я подозреваю, что это может быть root проблемы.

Есть ли какой-нибудь способ избавиться от этих ложных аннотаций?

Не могу себе представить, что это полезно, но вот верхний уровень build.gradle:

ext {
    artifactoryRepo = findProperty('artifactory_repo') ?: "http://fnord:8081/artifactory"
}

allprojects {
    repositories {
        // Use our Fnord local cache of maven first (for external dependencies; not stuff we make)
        maven { url "${artifactoryRepo}/jcenter" }
    }
}

(Вы заметите, что закрытие buildscript{} отсутствует, поскольку это технически , а не Android проект. Существование такого закрытия не имеет значения для Я обсуждаю проблему.)

И первые X строк модуля build.gradle (остальное - публикация и sourceJar, генерация docJar, которую я не могу себе представить, уместна):

plugins {
    id "groovy"
    id "java-gradle-plugin"
    id "maven-publish"
    id "com.jfrog.artifactory" version "4.7.5"
}

// Set the project specific properties here
project.group = "org.clvrmnky.plugin"
project.version = "1.2-SNAPSHOT"

Эта проблема была поднята в Google через систему отслеживания ошибок: Android Studio Groovy классы, все аннотированные в IDE с «уже существует»

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