Как включить файл .proto из другого модуля с локальным путем в Gradle - PullRequest
0 голосов
/ 03 мая 2019

Я на самом деле переносю многомодульный Java-проект из Maven в Gradle.У меня есть несколько модулей, в которых есть некоторые файлы protobuf, и для работы нужно импортировать другие.Например, в одном модуле у меня есть файл Type.proto, который объявляет тип Date.В другом модуле message.proto необходимо импортировать Type.proto, чтобы использовать тип Date.Я работаю на местном, поэтому ни один из прототипных модулей не опубликован.

Я попытался добавить модуль, который мне нужно импортировать, в качестве зависимости в файл build.gradle, но я либо добавляю его как "compile project": module-proto '", и он не показывает ошибку, нозатем, когда в .proto я указываю "import" package.Type.proto ", он говорит, что такого файла не существует, либо я добавляю его как" protobuf ": module-proto '", но затем он показывает, что ошибка не может найти такойВ моем проекте Maven мне просто нужно было написать в Pom.xml:

<properties>
<project.proto.includeLocalPath> ../../../../module-proto/proto/src/main/proto </project.proto.includeLocalPath>
</properties>

, затем в файле .proto я сделал

"import 'package.Type.proto' 

, и тогда все заработало нормально.

Я хотел бы сделать то же самое в Gradle, у вас есть какие-либо идеи о том, как это сделать? Я попытался добавить каталог в блок Proto sourceSet {main {proto {}}}, который он добавляетскомпилированный протокол в каталоге, но я все еще не могу импортировать файл, который я хочу использовать, описанные в нем типы.

Вот моя структура проекта:

projetparent
    moduleproto1
        src
            main
                proto
                    protoMessage.proto
        build.gradle
    moduleproto2
        src
            main
                proto
                    Type.proto
        build.gradle

В protoMessage.protoя хочу импортировать Type.proto.Date

РЕДАКТИРОВАТЬ: я нашел решение, в build.gradle из moduleproto2, я добавил зависимость следующим образом:

protobuf fileTree("../moduleproto1/src/main/proto/Type.proto")

Затем в protoMessage.proto я смог сделать:

import Type.proto 

Затем я мог бы использовать тип Date в protoMessage.proto ХотяintelliJ выделите его как ошибку, хотя он компилируется.

Однако теперь у меня возникла новая проблема.У меня есть 3-й модуль, который не является протомодулем, но содержит основной Java-класс «Приложение», и в этом основном классе я должен импортировать один из прототипов других модулей.Я попытался с компиляцией project(':moduleproto1'), но потом, когда я пишу import protoMessage, это не работает.Любая идея ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...