Возможно, связано, но решения там не совсем применимы:
- IDEA Groovy тестовый класс уже существует
- "Класс уже существует "ошибка в IntelliJ для Groovy класса
- И возможно: Класс '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 с «уже существует»