Импорт из родительской папки в дочернюю в прото - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь импортировать proto defn из родительского proto в дочерний proto со следующей структурой папок.

|
|--parent.proto
|
|--sub
    |--child.proto

parent.proto

message Attribute {
  ---
}

child.proto

import "parent.proto"

    message Child {
      int32 attributeNo = 1;
      com.model.Attribute attribute = 2;

    }

В настоящее время выдает ошибку, когда не может найти parent.proto. Пожалуйста, предложите.

1 Ответ

0 голосов
/ 03 ноября 2018

protoc ищет свой импорт в каталогах, указанных с помощью флага -I. Например, вы можете добавить -I/home/user/my_awesome_proto_lib к аргументам командной строки protoc, и компилятор будет искать ваш импорт там.

Со страницы справки по протоколу о --proto_path:

  -IPATH, --proto_path=PATH   Specify the directory in which to search for
                              imports.  May be specified multiple times;
                              directories will be searched in order.  If not
                              given, the current working directory is used.

Так что в настоящее время, когда вы запускаете protoc, он будет искать parent.proto в каталоге sub. Это явно не то, что вам нужно. Вы можете изменить свой импорт на import "../parent.proto", который вернется к корневому уровню и оттуда получит parent.proto. Но общепринятым стилем в protobuf не является использование относительного импорта.

Вместо этого вы можете рассмотреть возможность добавления корня вашего прототипа в виде флага -I / --proto_path.

Другим вариантом будет скомпилировать ваши файлы прототипов из корня проекта. Вы можете cd в корневой каталог проекта и protoc оттуда.

...