Я на самом деле переносю многомодульный 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
, это не работает.Любая идея ?