Auf automatisch generierte GRPC-Klassen kann in EclipseIDE nicht als Quellordner zugegriffen werden, sie sind jedoch vorJava

Java-Forum
Anonymous
 Auf automatisch generierte GRPC-Klassen kann in EclipseIDE nicht als Quellordner zugegriffen werden, sie sind jedoch vor

Post by Anonymous »

Ich baue eine Java Spring Boot 4-Backend-Plattform auf, die in Microservices aufgeteilt ist, und nutze GRPC als Kommunikationsprotokoll für die Kommunikation zwischen den Microservices. Mein Build-Tool ist Gradle und ich stehe vor einem (wahrscheinlich) exklusiven Problem von EclipseIDE.
Dev-Konventionen folgend habe ich meine .proto-Datei unter src/main/proto/billing_service.proto erstellt. In build.gradle habe ich die GRPC-Abhängigkeiten korrekt deklariert. Mit ./gradlew compileJava kompiliert Gradle sie und generiert mühelos die erforderlichen GRPC .java-Dateien unter build/generated/sources/proto/main/java und build/generated/sources/proto/main/grpc. (Ich kann ihre Existenz im Finder meines Macs bestätigen)
Da EclipseIDE nur den Import von Dateien von außerhalb des src/ des Projekts zulässt, wenn sie sich in Quellordnern befinden, markiere ich die generierten GRPC-Repositorys mit dem Gradle Eclipse-Plugin als Quellordner:

Code: Select all

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))
}
}
}
Außer build/generated/sources/proto/main/grpc EclipseIDE erkennt sie alle und ermöglicht mir Importe. Build/generated/sources/proto/main/grpc wird jedoch nicht angezeigt, egal ob ich ./gradlewEclipse Eclipse bereinige, mein Gradle-Projekt lösche und erneut in EclipseIDE importiere oder es einfach aktualisiere. Ich kann bestätigen, dass build/generated/sources/proto/main/grpc mit der erforderlichen .java-Datei gefüllt ist – sie ist also nicht leer.
Gibt es einen EclipseIDE-internen Hack oder Gradle-Snippet, der dafür sorgt, dass alle diese Ordner korrekt angezeigt und referenziert werden können?
Image

Image

---------------------------------
BEARBEITEN
Ich liebe das Programmieren: Ich habe 2 Stunden damit gekämpft, 20 Minuten diese Frage geschrieben, danach eine andere mögliche Lösung versucht und sie gelöst.
Die Lösung bestand darin, den Klassenpfad als Quellordner zu deklarieren, bevor das Buildship-Plugin die Änderungen überschreiben kann, indem file.beforeMerged {} anstelle von file.whenMerged {} verwendet wird. Die folgende Änderung hat das Problem behoben:

Code: Select all

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))
}
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post