/ Ako organizujem projekt so zdieľanou knižnicou v Maven - java, jar, maven

Ako môžem organizovať projekt so zdieľanou knižnicou v Maven - java, spring, maven

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ď č. 1

Namiesto 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.