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))
}
}
}
Gibt es einen EclipseIDE-internen Hack oder Gradle-Snippet, der dafür sorgt, dass alle diese Ordner korrekt angezeigt und referenziert werden können?


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