Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как организовать всё в проекте, когда контракты зависят от thrift generated кода. / 25 сообщений из 28, страница 1 из 2
27.08.2018, 18:19
    #39693894
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
У нас есть 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
27.08.2018, 18:44
    #39693899
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
questioner,
Сабж вроде для RPC а не для rest.
...
Рейтинг: 0 / 0
27.08.2018, 18:58
    #39693906
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
Petro123questioner,
Сабж вроде для RPC а не для rest.

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

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

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

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

IMHO & AFAIK

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


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

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

Заменим это на класс, обрабатывающий http запросы .
...
Рейтинг: 0 / 0
27.08.2018, 19:20
    #39693929
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
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
27.08.2018, 19:26
    #39693931
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
Андрей Панфилов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
27.08.2018, 19:51
    #39693945
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
questioner,

вот пример: https://github.com/csaltos/hello-finagle-maven
...
Рейтинг: 0 / 0
27.08.2018, 20:14
    #39693957
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
Андрей Панфилов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
27.08.2018, 20:22
    #39693964
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
...
Рейтинг: 0 / 0
27.08.2018, 20:45
    #39693972
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
Андрей Панфилов,
Мы так договоримся, что и SOAP это rest.
То же ведь, сериализация и дергаем методы.
Юз кейсы от ТС надо.
Сабж он для толстого клиента. Или два бэк сервера между собой.
...
Рейтинг: 0 / 0
27.08.2018, 21:35
    #39694000
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
Petro123Андрей Панфилов,
Мы так договоримся, что и SOAP это rest.Это вы чет не по адресу, SOAP - это RPC
...
Рейтинг: 0 / 0
27.08.2018, 21:47
    #39694006
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
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
27.08.2018, 22:29
    #39694024
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
Андрей Панфилов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
27.08.2018, 23:04
    #39694035
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
questioner, блаженный что-ли? Скомпилируй сгенеренные исходники и собери в jar. Потом используй его как зависимость во втором проекте.
...
Рейтинг: 0 / 0
27.08.2018, 23:41
    #39694043
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
fixxerquestioner, блаженный что-ли? Скомпилируй сгенеренные исходники и собери в jar. Потом используй его как зависимость во втором проекте.

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

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

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

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

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

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

Команды разные, репозитории разные
...
Рейтинг: 0 / 0
28.08.2018, 11:42
    #39694188
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
questionerКоманды разные, репозитории разные
Rest согласовывают руками.
Автоматом есть soap.
Но там при генерации свои заморочки.
Если на той стороне поменяли, то прокси класс на этой стороне станет другим и код перестанет компилироваться.
Откуда задача возникла и какая она?
...
Рейтинг: 0 / 0
28.08.2018, 11:43
    #39694189
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
Решили сделать проект с трифтом мавен проектом, который будет генерить 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
28.08.2018, 12:07
    #39694220
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать всё в проекте, когда контракты зависят от thrift generated кода.
questioner,

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

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

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

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

https://thrift.apache.org/download

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

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

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

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


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