Вы можете выполнить sh через protoc_insertion_point
с. Когда вы сгенерируете код Java, вы увидите комментарии типа // @@protoc_insertion_point(...)
. Вот где будет происходить вставка.
Несмотря на то, что этот подход полезен, он имеет серьезные недостатки для .protos, используемого в нескольких проектах. Все проекты, использующие одно и то же .proto и на одном и том же языке, должны использовать одни и те же плагины, в противном случае это вызывает проблему зависимости от алмаза . Вот почему gRP C действительно не использовал этот подход и вместо этого генерирует свои классы в отдельных файлах из обычной генерации сообщений. Я категорически не одобряю этот подход, так как он загоняет вас в угол, и вы не знаете, когда вам нужно будет «заплатить пайперу».
Чтобы вставить в точку, ваш плагин должен работать в тот же protoc
вызов командной строки, что и встроенный java. Тогда вашему плагину потребуется установить CodeGeneratorResponse.file.insertion_point
и content
для каждого файла, в который вы хотите ввести код.