2016-05-19 3 views
1

Gradle protobuf plugin легко компилирует .proto файлы в классы Java.Gradle GRPC компиляция для Java, JS, C#

Возможно ли сделать прото компиляцию для javascript (или других языков) с тем же плагином?

Я хочу сгенерировать готовый артефакт для нескольких языков, чтобы другие проекты не беспокоились о связанных с протонами задачах и просто использовали предоставленный ресурс ... и это гарантирует, что каждый раз, когда я вношу изменения в прото-файл я получаю все разные языковые версии, совместимые друг с другом ...

ответ

0

Вы можете сгенерировать для любого языка, поддерживаемого протоком. Просто добавьте его в «встроенные» (или «плагины», если поддержка предоставляется плагином protoc, что всегда происходит, если вы хотите генерировать службы GRPC). Например, для создания файлов C++ для прото файлов по всем sourceSets:

protobuf { 
    generateProtoTasks { 
    all()*.builtins { 
     cpp {} 
    } 
    } 
} 

Тогда вы найдете все сгенерированные источники C++ под «строить/генерироваться/источник/прото/{главная | тест}/CPP».

Хотя плагин Gradle protobuf добавляет все сгенерированные файлы на вход компиляции Java, в соответствии с моим экспериментом компиляция Java просто игнорирует файлы, отличные от Java, поэтому это не должно вызывать никаких проблем.

Если вы хотите генерировать службы GRPC, возможно, вам придется скомпилировать плагины GRPC codegen для других языков, кроме Java, поскольку мы публикуем только плагин codegen для Java GRPC в репозиторий Maven.

+0

Можете ли вы привести пример проекта? это не работает для меня ... Даже если мне это нужно, мне нужна документация для настройки местоположений и т. д. Я вообще ничего не могу найти, как компилировать grpc с помощью градиента на что-нибудь еще, кроме java ... – vach

+1

Загрузите [protobuf- gradle-plugin] (https://github.com/google/protobuf-gradle-plugin), отредактируйте 'testProject/build.gradle' и добавьте' all() *. builtins {cpp {}} 'под' generateProtoTasks { '. Затем запустите './gradlew testProject: clean testProject: generateProto'. Вы найдете источники C++, созданные в 'testProject/build/generated/source/proto/main/cpp /' –

+1

Я только что понял в своем первоначальном ответе, я пропустил блок 'generateProtoTasks'. Теперь это исправлено. –

Смежные вопросы