Получение IntelliJ для генерации источников Java из файлов ProtoJAVA

Программисты JAVA общаются здесь
Anonymous
Получение IntelliJ для генерации источников Java из файлов Proto

Сообщение Anonymous »

На моем Mac у меня установлена ​​локальная версия libprotoc 27.3 (Protocol Buffers (Protobuf)), и я пытаюсь заставить ее «хорошо работать» с моим приложением Java 17 внутри IntelliJ. . Мое Java-приложение имеет следующую структуру каталогов высокого уровня:

Код: Выделить всё

myapp/
src/
main/
java/
proto/
resources/
Внутри каталога src/main/proto/ находится один файл с именем dostuff.proto, который выглядит следующим образом:

Код: Выделить всё

syntax = "proto3";

package stuffdoer;
option java_multiple_files = true;
option java_package = "com.me.myapp.dostuff.stuffdoer";

message DoStuffRequest{
bytes image = 1;
}

message DoStuffResponse{
string stuff_image = 1;
}

service DoStuffDetection{
rpc GetStuffToDo(DoStuffRequest) returns (DoStuffResponse) {}
}
Я считаю, что идея заключается в том, что мне нужно запустить этот инструмент для создания исходного кода Java, который затем можно будет использовать в других областях этого проекта. Конечно же, я вижу, что существуют исходные файлы Java, которые, похоже, ожидают кода Java, сгенерированного этим файлом. Одним из примеров является исходный файл Java под названием DoStuffClient, в котором объявляются следующие операторы импорта:

Код: Выделить всё

package com.me.myapp.dostuff.stuffdoer.client;

import com.google.protobuf.ByteString;
import com.me.myapp.dostuff.stuffdoer.DoStuffGrpc;
import com.me.myapp.dostuff.stuffdoer.DoStuffRequest;
import io.grpc.StatusRuntimeException;

...
В IntelliJ я получаю ошибки компилятора, потому что я явно не запустил Google Protocol Buffers для чтения этого файла dostuff.proto и создания DoStuffGrpc и DoStuffRequest
code> Исходники Java.
Когда я запускаю сборку Maven локально и запускаю приложение на своем локальном компьютере, оно запускается, и я могу вручную протестировать код в DoStuffClient > и убедитесь, что все работает нормально. Поэтому я считаю, что Maven правильно генерирует исходные коды Java (определенные в dostuff.proto) и делает их доступными для среды выполнения Java.
Однако раздражает получение компилятора. ошибки в IntelliJ. Что я могу сделать, чтобы вызвать буферы протокола Google изнутри IntelliJ, чтобы он генерировал источники Java (определенные в dostuff.proto) и делал их доступными для пути времени компиляции, чтобы я перестал видеть ошибки компилятора, когда я Пишу код в IntelliJ?
Какие точные шаги нужно предпринять, чтобы IntelliJ генерировал исходные коды Java из моих файлов .proto, а затем связывал их? в путь времени компиляции, чтобы другие исходные файлы в открытом проекте могли их «видеть»?

Подробнее здесь: https://stackoverflow.com/questions/789 ... roto-files

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