Jaki przyjąć setup projektu Spring Boot + Angular 4 i pakowaniu jako jar?

0

Hej.
Próbuję ułożyć jakiś setup projektu Angular 4 + Spring Boot i nie wiem za bardzo jaka będzie najlepsza praktyka odnośnie umieszczenia frontu w projekcie. Próbowałem się kierować JHipsterem, oni tam trzymają Angularową apkę w src/main/webapp jednakże w dokumentacji Springa powiadają, że jeśli moduł webapp to tylko przy upakowaniu jako war, ja natomiast chcę jar'a.
Więc pytam się was czy ok będzie wrzucić cała apkę angularową w src/main/resources/static ? Czy może w innym folderze dodatkowym w resources?

1

W przypadku Spring Boota to pozostaje main/resources/static/, bo taki jest model przyjęty w tym frameworku. Jest jeszcze kilka opcji z nazwami folderów, ale generalnie nie za bardzo masz pole manewru. Opis tutaj.

2

Robie takue cusie jako 2 niezalezne aplikacje front i rest backend. Potem ewntualnie jesli trzeba dopisuje pakowanie frontu jako static do servera ale to dopiero jak leci na jakas produkcje

0

Dobrze rozumiem, że jeśli wpakuje angulara do /static spakuje to wszystko, postawię sobie na serwerze to angular "działa" po stronie backendu i tylko odsyła wybrane skrawki contentu dynamicznego? Czy cały angular wysyłany jest na front i tam sobie dopiero działa i generuje dynamicznie wsio?
jarekr000000: wstawiasz front jako całkiem inny projekt (w sensie 2 osobne foldery) czy po prostu w jednym projekcie ale angular jest na wysokości np. /src ?

1

Tak jak napisalem. Totalnie osobno najczesciej.

Edycja/Rozwinięcie.
W angularowym projekcie korzystam z angular-cli i odpalam stronkę przez np. ng serve --proxy-config proxy.conf.json

W ten sposób po odpowiednich wpisach w proxy.conf.json - wszelkie wywołania na localhost/api sa przekierowane do serwera javowego.
(czyli poniekąd odwrotnie niż OP chciał robić).

Podczas developmentu mam dwa niezależne serwery.

Dopiero pakowanie na produkcję powoduje, że pakuje front jako pakiet do odpalania z serwera javowego (ale tu zwykle wiele zależy od lokalnych ograniczeń/ maszyn/ operatorów z piekła rodem).

0

Jarku czyli budujesz projekt angulara na profilu produkcyjnym i wrzucasz folder dist do /src/main/resources/static ? (z tego co wiem można np. za pomoca mavena lub manualnie)

1

Tak coś podobnego robię w niektórych projektach. To zwykle nie jest zupełnie proste - bo mam np. ograniczenia w narzędziach na produkcji. Ale jakieś wro4j i parę innych tooli (frontend maven plugin) potrafi sprawę załatwić.
Ważne, żeby takie pakowanie (bo trwa dłużej i jest bardziej upierdliwe) nie było używane w developmencie. W developmencie frontu ważne jest, aby zmiany były widoczne w mniej niz 2 sekundy. angular-cli , gulp . npm dają rade.

Tak samo RESTowe serwisy będą restartowąły szybciej jak do wara/jara nie będziesz pakował normalnie ton niepotrzebnych rzeczy.

Ogólnie profit.

W ramach spowiedzi: jeden z mniej ważnych serwisów u mnie stoi od kilu miesiecy *produkcyjnie * na angular-cli serve (+ akka-http normalny backend) - bo mi się nie chciało konfigurować tego mavena (sbt tak baprawdę) i staticów, a w ramach jakiegoś dnia dobroci dla zwierząt miałem serwer z możliwościa odpalenia czegokolwiek. (Dorzuciłem do backloga, że jak to ma profesjonalnie i bezpiecznie działać to trzeba będzie zmienić :-) ale wiadomo jak to prio3 idzie).

0

Ja osobiście rozwiązałem to w ten sposób, że własnie przy pomocy mavenowego plugina "frontend-maven-plugin" przy budowaniu całego projektu buduje się front i bundla automatycznie wrzuca do /resource/static do tego config wstawiłem, żeby można było na node proxe stawić więc przy developmencie odpalam osobno front i można wygodnie pracować :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1