Zaujímalo by ma, či je to správny spôsob štruktúrovania môjho projektu a ako ho môžem nakonfigurovať, aby som mohol zostavovať / testovať / baliť všetky svoje jednotlivé komponenty z jediného príkazu na zostavenie?
Mám projekt Maven, ktorý obsahuje viacmodules- Jarné aplikácie a „knižnica“ medzi nimi zdieľané ako závislosť. Chcel by som byť schopný vytvárať všetky aplikácie spolu s knižnicou, aby som mohol vykonávať testy integrácie vždy, keď sa niektorý z modulov zmení (lib alebo app).
V ideálnom prípade by som mal byť schopný zostaviť každýkomponent, spustiť testy jednotiek na aplikáciu / knižnicu, spustiť integračné testy, zabaliť každú súčasť do spustiteľnej nádoby. V určitom okamihu sa tento proces spustí na serveri Jenkins s testami na vyššej úrovni.
Práve teraz, používam mvn clean install spring-boot:repackage
, Toto funguje pre každú aplikáciu samostatne, t. keď beží od Main Project/App1/
, Keď to však spustím z koreňa projektu Main Project/
, Dostávam chybu, že knižnica nemôže byť na jar zabalená, pretože knižnica nemá hlavnú triedu. To je v poriadku - je to knižnica, nepotrebuje vstupný bod.
Je to teda správny spôsob štruktúrovania projektu s viacerými aplikáciami v Maven alebo robím niečo veľmi zlé?
Štruktúra projektu je:
Main Project
|-SharedLibrary/
|-src/
|-pom.xml
|-App1/
|-src/
|-pom.xml
|-App2/
|-src/
|-pom.xml
|-App3/
|-src/
|-pom.xml
|-pom.xml
odpovede:
1 pre odpoveď č. 1Namiesto spustenia cieľa na príkazovom riadku zvážte pridanie konfigurácie pre Cieľ úpravy balenia doplnku Spring Boot maven na POM. Ak sa pridá konfigurácia, prebalenie sa spustí ako súčasť mvn clean install
Príkaz.
Najskôr pridajte doplnok do rodičovského POM v systéme Windows pluginManagement
oddiel. Tým sa zabezpečí, že verzia systému Spring boot bude konzistentná pre všetky moduly.
<pluginMangement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>YourSpringBootVersion</version>
</plugin>
</plugins>
</pluginMangement>
Potom pridajte repackage
Cieľom je POM pre moduly Spring Boot. Cieľ sa viaže na fázu package
v predvolenom nastavení podľa dokumentov.
<plugins>
<plugin>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>spring-boot-repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
Alternatívne sa aplikácia používa repackage
do 3 zo 4 modulov môžete pridaťkonfigurácia nad rodičom. Ak to urobíte, vykoná sa cieľ doplnku pre všetky moduly, o ktorých vieme, že nefungujú. Takže, ak vyberiete túto možnosť, musíte doplnku povedať nie spustiť v knižnici:
<plugins>
<plugin>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>spring-boot-repackage</id>
<phase>none</phase>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
Poznačte pridanie <phase>none</phase>
, Zakáže to cieľ doplnku iba pre tento modul.