Jeśli robicie małą aplikację w Spring Boocie to po prostu uruchamiacie ją jako JAR.
Ale co jak do tej aplikacji ma dojść jakiś mały frontend (np. formularz, który będzie strzelał do tego backendu i jakaś pobierana lista)?
Kiedyś robiło się tak: - MVC i front w JSP - już tak się nie robi, - MVC i front w Thymeleaf - też już stare i chcę mieć one page app, - Front w HTML i JS, do tego jQuery albo inny framework pobierany jako JS w index.html, wszystko wrzucone do resource apki backendowej.
Teraz front robi się w Angular/React (budowane przez Webpack i npm, a nie zwykły plik index.html) i stawia jako oddzielną aplikację.
Ale ja nie potrzebuję oddzielnej aplikacji (dodatkowo problem dla adminów, bo się komplikują wdrożenia), chcę mieć to w jednym jarze.
Jak do tego podchodzicie? Pakujecie Mavenem (który plugin?) czy jak inaczej?
@mk321: jak na moje to wystarczy wrzucic fronty do katalogu static w resources i beda serwowane przez serwer z jarki.
Mozesz sobie podpiac zeby podczas budowania mavenem/gradlem odpalal sie jakis webpack (czy co to sie teraz uzywa na rakowych frontach ;p) i jako target mial static
@Kuriozal: no tak, mogę zbudować ręcznie front, wrzucić do static, zbudować backend, pilnować, żeby w folderze static git ignorował tylko te wrzucone pliki (bo przecież mogą być inne)... Tylko czy muszę robić to ręcznie?
Istnieje plugin do Mavena, który niby to robi automatycznie. Ale czy to dobre podejście? Ten plugin jest mało popularny, rozwijamy głównie przez jedną osobę, więc w każdej chwili może już nie być wspierany.
@PrzegrywWykopek: i komercyjnie robi to się ręcznie? Albo każdy pisze skrypty w bashu, które będą to kopiować? Nie ma jakiego ładnego rozwiązania?
Jak mam front i backend na jednym serwerze, to łatwiej o zabezpieczenia. Wszystkie CORS-y itd. mają być dostępne tylko "od siebie" i z głowy. Jak mam dwie maszyny (np. S3) to już muszę myśleć skąd można strzelić, a skąd nie (i przy zmianie maszyny backendowej zmieniać konfigurację na frontendowej).
i komercyjnie robi to się ręcznie? Albo każdy pisze skrypty w bashu, które będą to kopiować? Nie ma jakiego ładnego rozwiązania?
Gradle i taski, w tym celu został stworzony gradle. Maven to fajne narzędzie, gdy jedyne co potrzebujesz, to zaciągnąć zależności i podpiąć jakiś plugin. W przypadku takiego angularjs nie miałeś jakiś fancy procesów, co najwyżej minifikacja. W Angularze 2 jest już inaczej, bo musisz przepuścić przez translator typescript.
@PrzegrywWykopek: nie używam Gradle tylko Maven. Może czas wreszcie się przerzucić. Ale myślałem że na jedno wychodzi (też tylko do pobierania zależności i odpalania pluginów). Tylko Gradle niby szybszy, bo robi równolegle (ale też słyszałem o problemach z szybkością budowania względem Mavena). Były też problemy z Gradle i Javą 11 w Springu. Wychodzi, że Maven jednak nadal stabilniejszy.
Miałem na myśli, że jak mam front i backend w jednym jar,
nie używam Gradle tylko Maven. Może czas wreszcie się przerzucić. Ale myślałem że na jedno wychodzi (też tylko do pobierania zależności i odpalania pluginów). Tylko Gradle niby szybszy, bo robi równolegle (ale też słyszałem o problemach z szybkością budowania względem Mavena). Były też problemy z Gradle i Javą 11 w Springu. Wychodzi, że Maven jednak nadal stabilniejszy.
@mk321: tutaj chodzi o taski gradle i to co umożliwiają. W skrócie możesz rozszerzyć
@mk321: "maven jest jednak nadal stabilniejszy" - po czym tak twierdzisz skoro z twoich odpowiedzi jasno wynika, ze nie miales nic wspolnego z czymkolwiek profesjonalnym? :)
Jeśli robicie małą aplikację w Spring Boocie to po prostu uruchamiacie ją jako JAR.
Ale co jak do tej aplikacji ma dojść jakiś mały frontend (np. formularz, który będzie strzelał do tego backendu i jakaś pobierana lista)?
Kiedyś robiło się tak:
- MVC i front w JSP - już tak się nie robi,
- MVC i front w Thymeleaf - też już stare i chcę mieć one page app,
- Front w HTML i JS, do tego jQuery albo inny framework pobierany jako JS w index.html, wszystko wrzucone do resource apki backendowej.
Teraz front robi się w Angular/React (budowane przez Webpack i npm, a nie zwykły plik index.html) i stawia jako oddzielną aplikację.
Ale ja nie potrzebuję oddzielnej aplikacji (dodatkowo problem dla adminów, bo się komplikują wdrożenia), chcę mieć to w jednym jarze.
Jak do tego podchodzicie?
Pakujecie Mavenem (który plugin?) czy jak inaczej?
@mk321: może czas zmienić adminów, jeśli ogarnięcie frontu i backendu osobno to problem?
Robię bardzo małe aplikacje, których używa kilka osób. Odpalam jar-a i aplikacja stoi. Po co mam to komplikować jak nic mi to nie daje?
Mozesz sobie podpiac zeby podczas budowania mavenem/gradlem odpalal sie jakis webpack (czy co to sie teraz uzywa na rakowych frontach ;p) i jako target mial static
Istnieje plugin do Mavena, który niby to robi automatycznie. Ale czy to dobre podejście? Ten plugin jest mało popularny, rozwijamy głównie przez jedną osobę, więc w każdej chwili może już nie być wspierany.
Nie wiem jak inni to
frontend to się wrzuca na s3 i serwuje cache klientom w zależności od lokalizacji.
Jak mam front i backend na jednym serwerze, to łatwiej o zabezpieczenia. Wszystkie CORS-y itd. mają być dostępne tylko "od siebie" i z głowy. Jak mam dwie maszyny (np. S3) to już muszę myśleć skąd można strzelić, a skąd nie (i przy zmianie maszyny backendowej zmieniać konfigurację na frontendowej).
Gradle i taski, w tym celu został stworzony gradle. Maven to fajne narzędzie, gdy jedyne co potrzebujesz, to zaciągnąć zależności i podpiąć jakiś plugin. W przypadku takiego angularjs nie miałeś jakiś fancy procesów, co najwyżej minifikacja. W Angularze 2 jest już inaczej, bo musisz przepuścić przez translator typescript.
Miałem na myśli, że jak mam front i backend w jednym jar,
@mk321: tutaj chodzi o taski gradle i to co umożliwiają. W skrócie możesz rozszerzyć
To akurat spora przesada :P po pytaniu OPa widac, ze to jakas mala p-------a gdzie uzycie AWS jest sporym overkillem
Lap to:
https://blogg.kantega.no/webapp-with-create-react-app-and-spring-boot/
I p-----l tych co mowia o 2 apkach na osobnych portach xd
Komentarz usunięty przez moderatora
@PrzegrywWykopek: a czyli oddzielna "usługa" AWS, tak jak pisałem, ze takie CDN (nawet sami tak to opisują na stronie: https://aws.amazon.com/cloudfront/ ).
Właśnie o ten plugin mi chodziło:
com.github.eirslett:frontend-maven-plugin(nie chciałem sam podawać, żeby nie sugerować odpowiedzi)
Czyli jednak po prostu się go używa.