powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
25 сообщений из 28, страница 1 из 2
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39693894
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У нас есть 2 проекта в репозитории:
В первом лежат наши REST контроллеры.
Во втором лежат интерфейсы написанные на thrift

Я скачал этот thrift. Понял, что можно сгенерить java код если вызвать вот такую команду в консоли для .thrift файла:

Код: powershell
1.
thrift-0.11.0.exe --gen java interfaceDefinition.thrift



Эта штука сгенерирует java сущности(классы и интерфейсы) и положит их в папку gen-java

Насколько я понимаю в другом проекте мы должны как-то сослаться на эти интерфейсы(чтобы написать в коде
Код: java
1.
MyRestController implements ThriftInterfacedefinition { ...

)

В идеале я вижу процесс следующим образом:

Я обновляю сорцы из репозитория, исполняю mvn clean package и мавен по .thrift файлам генерирует java код. Если интерфейс поменялся, то я вижу ошибки компиляции.

Подскажите как это всё организовать, пожалуйста.

Я видел, что можно не .exe качать для thrift, а использовать зависимость в мавене, потом ещё зачем-то плагин полдключать. У меня как-то не получилось - возможно из-за того, что .thrift файлы в другом проекте лежат.
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39693899
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,
Сабж вроде для RPC а не для rest.
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39693906
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123questioner,
Сабж вроде для RPC а не для rest.

А REST и RPC это противоречие?
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39693912
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerPetro123questioner,
Сабж вроде для RPC а не для rest.

А REST и RPC это противоречие?да
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39693918
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123questionerпропущено...
А REST и RPC это противоречие?да
И в чем?

В общем-то, RPC = Remote Procedure Call

чем дергание HTTP REST не Call
а сервлет обрабатывающий HTTP запрос не Procedure
лично мне, не ясно )))
по повоту Remote думаю вообще не однозначностей быть не может
Т.ч. HTTP REST вполне себе частный случай RPC

IMHO & AFAIK

p.s. То, что кто-то забивает микроскопом гвозди, в общем-то нормально
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39693921
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123questionerпропущено...


А REST и RPC это противоречие?да

Пусть слова REST там не будет.

Заменим это на класс, обрабатывающий http запросы .
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39693929
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevИ в чем?

В общем-то, RPC = Remote Procedure Call

чем дергание HTTP REST не Call
а сервлет обрабатывающий HTTP запрос не Procedure
лично мне, не ясно )))
по повоту Remote думаю вообще не однозначностей быть не может
Т.ч. HTTP REST вполне себе частный случай RPC

IMHO & AFAIK
RPC - это методы и аргументы, а REST - это вполне конкретные операции (GET, PUT, PATCH, POST, DELETE) над коллекциями и объектами.

По теме топика: в maven в фазе generate-sources должен запускаться генератор кода, конец истории.
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39693931
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей ПанфиловLeonid KudryavtsevИ в чем?

В общем-то, RPC = Remote Procedure Call

чем дергание HTTP REST не Call
а сервлет обрабатывающий HTTP запрос не Procedure
лично мне, не ясно )))
по повоту Remote думаю вообще не однозначностей быть не может
Т.ч. HTTP REST вполне себе частный случай RPC

IMHO & AFAIK
RPC - это методы и аргументы, а REST - это вполне конкретные операции (GET, PUT, PATCH, POST, DELETE) над коллекциями и объектами.

По теме топика: в maven в фазе generate-sources должен запускаться генератор кода, конец истории.

Андрей, в фазе какого проекта?
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39693945
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

вот пример: https://github.com/csaltos/hello-finagle-maven
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39693957
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфиловquestioner,

вот пример: https://github.com/csaltos/hello-finagle-maven

У них в помнике проекта с шаблонами генерация исходников. У меня это вообще не мавен проект

https://github.com/csaltos/hello-finagle-maven/blob/master/hello-interface/pom.xml

P.S. ещё там какой-то ненормалный thrift - от твиттера.
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39693964
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39693972
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,
Мы так договоримся, что и SOAP это rest.
То же ведь, сериализация и дергаем методы.
Юз кейсы от ТС надо.
Сабж он для толстого клиента. Или два бэк сервера между собой.
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39694000
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Андрей Панфилов,
Мы так договоримся, что и SOAP это rest.Это вы чет не по адресу, SOAP - это RPC
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39694006
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerУ них в помнике проекта с шаблонами генерация исходников. У меня это вообще не мавен проект

https://github.com/csaltos/hello-finagle-maven/blob/master/hello-interface/pom.xml

P.S. ещё там какой-то ненормалный thrift - от твиттера.Кладете туда pom.xml и он превращается в проект maven, если не нравится так, то наверняка можно через exec-maven-plugin сделать
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39694024
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей ПанфиловquestionerУ них в помнике проекта с шаблонами генерация исходников. У меня это вообще не мавен проект

https://github.com/csaltos/hello-finagle-maven/blob/master/hello-interface/pom.xml

P.S. ещё там какой-то ненормалный thrift - от твиттера.Кладете туда pom.xml и он превращается в проект maven, если не нравится так, то наверняка можно через exec-maven-plugin сделать

Получится, что имею 2 проекта. в одном контроллеры, а в другом генерированный код.

Проекты никак не связаны. Как в проекте с контроллерами имплементировать интерфейсы из генерированного кода?
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39694035
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner, блаженный что-ли? Скомпилируй сгенеренные исходники и собери в jar. Потом используй его как зависимость во втором проекте.
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39694043
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fixxerquestioner, блаженный что-ли? Скомпилируй сгенеренные исходники и собери в jar. Потом используй его как зависимость во втором проекте.

А потом кто-то меняет в репозитории thrift и что будет?

Как это автоматизировано сделать?
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39694047
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerА потом кто-то меняет в репозитории thrift и что будет?

Как это автоматизировано сделать?

Ну, условно говоря, каждый раз при изменении исходников трифта перегенерить код и пересобрать либу. Хочешь руками, но лучше, как уже писали, используй любую систему сборки, напимер maven. Потом используй CI, например Jenkins. Если оба модуля разрабатываются в одной команде и жизненный цикл модулей одинаков, лучше положить в один репозиторий с мультимодульным проектом.
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39694184
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fixxerquestionerА потом кто-то меняет в репозитории thrift и что будет?

Как это автоматизировано сделать?

Ну, условно говоря, каждый раз при изменении исходников трифта перегенерить код и пересобрать либу. Хочешь руками, но лучше, как уже писали, используй любую систему сборки, напимер maven. Потом используй CI, например Jenkins. Если оба модуля разрабатываются в одной команде и жизненный цикл модулей одинаков, лучше положить в один репозиторий с мультимодульным проектом.

Команды разные, репозитории разные
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39694188
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerКоманды разные, репозитории разные
Rest согласовывают руками.
Автоматом есть soap.
Но там при генерации свои заморочки.
Если на той стороне поменяли, то прокси класс на этой стороне станет другим и код перестанет компилироваться.
Откуда задача возникла и какая она?
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39694189
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решили сделать проект с трифтом мавен проектом, который будет генерить java код, паковать в jar и выкклаывать в Nexus.

Теперь непонятно как уйти от

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<plugins>
            <plugin>
                <groupId>org.apache.thrift.tools</groupId>
                <artifactId>maven-thrift-plugin</artifactId>
                <version>0.1.11</version>
                <configuration>
                    <thriftExecutable>D:/work/thrift-folder/thrift-0.11.0.exe</thriftExecutable>
                    <thriftSourceRoot>../thrift-files</thriftSourceRoot>
                    <generator>java</generator>
                </configuration>
                <executions>
                    <execution>
                        <id>thrift-sources</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>



строки
Код: java
1.
<thriftExecutable>D:/work/thrift-folder/thrift-0.11.0.exe</thriftExecutable>
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39694220
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

кладете бинарники в проект, если нужно еще в разных ОС собирать, то подключаете os-maven-plugin, названия бинарников делать в соответствии с os-maven-plugin, в плагине использовать ${os.detected.name}. Альтернатива: запаковать бинарники в jar через maven-dependency-plugin выкачивать jar как зависимость и распаковывать в build
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39694315
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфиловquestioner,

кладете бинарники в проект, если нужно еще в разных ОС собирать, то подключаете os-maven-plugin, названия бинарников делать в соответствии с os-maven-plugin, в плагине использовать ${os.detected.name}. Альтернатива: запаковать бинарники в jar через maven-dependency-plugin выкачивать jar как зависимость и распаковывать в build

Положить бинарники трифта для каждой ОС в гит репозиторий?
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39694422
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerПоложить бинарники трифта для каждой ОС в гит репозиторий?а что вас смущает?
...
Рейтинг: 0 / 0
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
    #39694496
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей ПанфиловquestionerПоложить бинарники трифта для каждой ОС в гит репозиторий?а что вас смущает?

Всё новое вызывает недоверие)
Возможно это и нормально.

https://thrift.apache.org/download

Вот ссылка для загрузки.
Я вижу тут только exe и архив.

Exe у меня под виндой работает и проект нормально собирается.

А что делать под линуксом?

В архиве какая-то непонятная мне структура. Это типо самому из этого надо сбилдить executable?
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]