Автоматически созданные классы GRPC недоступны в качестве исходных папок в EclipseIDE, но существуют.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Автоматически созданные классы GRPC недоступны в качестве исходных папок в EclipseIDE, но существуют.

Сообщение Anonymous »

Я создаю серверную платформу Java Spring Boot 4, разделенную на микросервисы, и использую GRPC в качестве протокола связи между микросервисами. Мой инструмент сборки — Gradle, и я столкнулся с проблемой (вероятно), эксклюзивной для EclipseIDE.
Следуя соглашениям разработчиков, я создал свой файл .proto в src/main/proto/billing_service.proto. В build.gradle я правильно объявил зависимости GRPC. С помощью ./gradlew compileJava Gradle легко компилирует их и генерирует необходимые файлы .java GRPC в командах build/generated/sources/proto/main/java и build/generated/sources/proto/main/grpc. (Я могу подтвердить их существование в поисковике моего Mac)
Поскольку EclipseIDE позволяет импортировать файлы за пределами src/ проекта только тогда, когда они находятся в исходных папках, я помечаю сгенерированные репозитории grpc как исходные папки с помощью плагина Gradle Eclipse:
eclipse {
classpath {
file.whenMerged { cp ->
cp.entries.add(new org.gradle.plugins.ide.eclipse.model.SourceFolder(
'build/generated/source/proto/main/java', null))
cp.entries.add(new org.gradle.plugins.ide.eclipse.model.SourceFolder(
'build/generated/source/proto/main/grpc', null))
}
}
}

За исключением build/generated/sources/proto/main/grpc EclipseIDE распознает их все и позволяет мне импортировать. Однако build/generated/sources/proto/main/grpc не отображается независимо от того, ./gradlew очищаюEclipse eclipse, удаляю и повторно импортирую свой проект Gradle в EclipseIDE или просто обновляю его. Я могу подтвердить, что build/generated/sources/proto/main/grpc заполнен необходимым файлом .java, поэтому он не пуст.
Существует ли внутренний хак EclipseIDE или фрагмент Gradle, который позволит правильно отображать все эти папки и на них можно ссылаться?
Изображение

Изображение

----------------------------------

РЕДАКТИРОВАТЬ
Я люблю программировать: потратил 2 часа на борьбу с этим, 20 минут на написание этого вопроса, после чего попробовал другое возможное решение и решил его.
Исправление заключалось в том, чтобы объявить путь к классам как исходную папку, прежде чем плагин сборки сможет перезаписать изменения, используя file.beforeMerged { вместо file.whenMerged {}. Следующее изменение решило проблему:
eclipse {
classpath {
file.beforeMerged { cp ->
cp.entries.add(
new org.gradle.plugins.ide.eclipse.model.SourceFolder(
'build/generated/source/proto/main/grpc', null))
cp.entries.add(
new org.gradle.plugins.ide.eclipse.model.SourceFolder(
'build/generated/source/proto/main/java', null))
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... lipseide-b
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»