|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
У нас есть 2 проекта в репозитории: В первом лежат наши REST контроллеры. Во втором лежат интерфейсы написанные на thrift Я скачал этот thrift. Понял, что можно сгенерить java код если вызвать вот такую команду в консоли для .thrift файла: Код: powershell 1.
Эта штука сгенерирует java сущности(классы и интерфейсы) и положит их в папку gen-java Насколько я понимаю в другом проекте мы должны как-то сослаться на эти интерфейсы(чтобы написать в коде Код: java 1.
) В идеале я вижу процесс следующим образом: Я обновляю сорцы из репозитория, исполняю mvn clean package и мавен по .thrift файлам генерирует java код. Если интерфейс поменялся, то я вижу ошибки компиляции. Подскажите как это всё организовать, пожалуйста. Я видел, что можно не .exe качать для thrift, а использовать зависимость в мавене, потом ещё зачем-то плагин полдключать. У меня как-то не получилось - возможно из-за того, что .thrift файлы в другом проекте лежат. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 18:19 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
questioner, Сабж вроде для RPC а не для rest. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 18:44 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
Petro123questioner, Сабж вроде для RPC а не для rest. А REST и RPC это противоречие? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 18:58 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
questionerPetro123questioner, Сабж вроде для RPC а не для rest. А REST и RPC это противоречие?да ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 19:01 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
Petro123questionerпропущено... А REST и RPC это противоречие?да И в чем? В общем-то, RPC = Remote Procedure Call чем дергание HTTP REST не Call а сервлет обрабатывающий HTTP запрос не Procedure лично мне, не ясно ))) по повоту Remote думаю вообще не однозначностей быть не может Т.ч. HTTP REST вполне себе частный случай RPC IMHO & AFAIK p.s. То, что кто-то забивает микроскопом гвозди, в общем-то нормально ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 19:07 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
Petro123questionerпропущено... А REST и RPC это противоречие?да Пусть слова REST там не будет. Заменим это на класс, обрабатывающий http запросы . ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 19:10 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
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 должен запускаться генератор кода, конец истории. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 19:20 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
Андрей Панфилов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 должен запускаться генератор кода, конец истории. Андрей, в фазе какого проекта? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 19:26 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 19:51 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
Андрей Панфиловquestioner, вот пример: https://github.com/csaltos/hello-finagle-maven У них в помнике проекта с шаблонами генерация исходников. У меня это вообще не мавен проект https://github.com/csaltos/hello-finagle-maven/blob/master/hello-interface/pom.xml P.S. ещё там какой-то ненормалный thrift - от твиттера. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 20:14 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
Ещё это интересует https://stackoverflow.com/questions/52044010/how-to-use-thrift-generator-as-maven-dependency ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 20:22 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Мы так договоримся, что и SOAP это rest. То же ведь, сериализация и дергаем методы. Юз кейсы от ТС надо. Сабж он для толстого клиента. Или два бэк сервера между собой. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 20:45 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
Petro123Андрей Панфилов, Мы так договоримся, что и SOAP это rest.Это вы чет не по адресу, SOAP - это RPC ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 21:35 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
questionerУ них в помнике проекта с шаблонами генерация исходников. У меня это вообще не мавен проект https://github.com/csaltos/hello-finagle-maven/blob/master/hello-interface/pom.xml P.S. ещё там какой-то ненормалный thrift - от твиттера.Кладете туда pom.xml и он превращается в проект maven, если не нравится так, то наверняка можно через exec-maven-plugin сделать ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 21:47 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
Андрей ПанфиловquestionerУ них в помнике проекта с шаблонами генерация исходников. У меня это вообще не мавен проект https://github.com/csaltos/hello-finagle-maven/blob/master/hello-interface/pom.xml P.S. ещё там какой-то ненормалный thrift - от твиттера.Кладете туда pom.xml и он превращается в проект maven, если не нравится так, то наверняка можно через exec-maven-plugin сделать Получится, что имею 2 проекта. в одном контроллеры, а в другом генерированный код. Проекты никак не связаны. Как в проекте с контроллерами имплементировать интерфейсы из генерированного кода? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 22:29 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
questioner, блаженный что-ли? Скомпилируй сгенеренные исходники и собери в jar. Потом используй его как зависимость во втором проекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 23:04 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
fixxerquestioner, блаженный что-ли? Скомпилируй сгенеренные исходники и собери в jar. Потом используй его как зависимость во втором проекте. А потом кто-то меняет в репозитории thrift и что будет? Как это автоматизировано сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 23:41 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
questionerА потом кто-то меняет в репозитории thrift и что будет? Как это автоматизировано сделать? Ну, условно говоря, каждый раз при изменении исходников трифта перегенерить код и пересобрать либу. Хочешь руками, но лучше, как уже писали, используй любую систему сборки, напимер maven. Потом используй CI, например Jenkins. Если оба модуля разрабатываются в одной команде и жизненный цикл модулей одинаков, лучше положить в один репозиторий с мультимодульным проектом. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 00:12 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
fixxerquestionerА потом кто-то меняет в репозитории thrift и что будет? Как это автоматизировано сделать? Ну, условно говоря, каждый раз при изменении исходников трифта перегенерить код и пересобрать либу. Хочешь руками, но лучше, как уже писали, используй любую систему сборки, напимер maven. Потом используй CI, например Jenkins. Если оба модуля разрабатываются в одной команде и жизненный цикл модулей одинаков, лучше положить в один репозиторий с мультимодульным проектом. Команды разные, репозитории разные ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 11:39 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
questionerКоманды разные, репозитории разные Rest согласовывают руками. Автоматом есть soap. Но там при генерации свои заморочки. Если на той стороне поменяли, то прокси класс на этой стороне станет другим и код перестанет компилироваться. Откуда задача возникла и какая она? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 11:42 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
Решили сделать проект с трифтом мавен проектом, который будет генерить 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.
строки Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 11:43 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
questioner, кладете бинарники в проект, если нужно еще в разных ОС собирать, то подключаете os-maven-plugin, названия бинарников делать в соответствии с os-maven-plugin, в плагине использовать ${os.detected.name}. Альтернатива: запаковать бинарники в jar через maven-dependency-plugin выкачивать jar как зависимость и распаковывать в build ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 12:07 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
Андрей Панфиловquestioner, кладете бинарники в проект, если нужно еще в разных ОС собирать, то подключаете os-maven-plugin, названия бинарников делать в соответствии с os-maven-plugin, в плагине использовать ${os.detected.name}. Альтернатива: запаковать бинарники в jar через maven-dependency-plugin выкачивать jar как зависимость и распаковывать в build Положить бинарники трифта для каждой ОС в гит репозиторий? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 14:05 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
questionerПоложить бинарники трифта для каждой ОС в гит репозиторий?а что вас смущает? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 15:46 |
|
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
|
|||
---|---|---|---|
#18+
Андрей ПанфиловquestionerПоложить бинарники трифта для каждой ОС в гит репозиторий?а что вас смущает? Всё новое вызывает недоверие) Возможно это и нормально. https://thrift.apache.org/download Вот ссылка для загрузки. Я вижу тут только exe и архив. Exe у меня под виндой работает и проект нормально собирается. А что делать под линуксом? В архиве какая-то непонятная мне структура. Это типо самому из этого надо сбилдить executable? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2018, 17:13 |
|
|
start [/forum/topic.php?fid=59&msg=39694315&tid=2121813]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 331ms |
total: | 471ms |
0 / 0 |