Vai al contenuto

Build e Deploy

Ordine di Build

Il progetto non ha un pom.xml root. Ogni modulo deve essere buildato separatamente, rispettando le dipendenze.

graph TD
    subgraph "Fase 1: Librerie JAR (mvn install)"
        M["MLib"] --> |install| R1[ ]
        E["EeMlib"] --> |install| R1
        MFA["MobileFineAdapterLib"] --> |install| R1
        OJ["OtticoServiceJPA"] --> |install| R1
        RC["REST Common"] --> |install| R1
    end

    subgraph "Fase 2: Applicazioni WAR (mvn package)"
        R1 --> GA["GeCo.Alfa"]
        R1 --> GS["GecoService"]
        R1 --> ELB["ElaborazioneService"]
        R1 --> CONN["ConnessioneService"]
        R1 --> OTT["OtticoService"]
        R1 --> VPN["VpnMctcService"]
        R1 --> MFAS["MobileFineAdapterServer"]
    end

    subgraph "Fase 3: Packaging"
        MFAS --> MFAEAR["MobileFineAdapterServerEar"]
    end

    subgraph "Fase 4: Quarkus (Java 11)"
        R1 --> REST["REST (Quarkus)"]
    end

    style M fill:#4CAF50,color:#fff
    style E fill:#4CAF50,color:#fff
    style MFA fill:#4CAF50,color:#fff
    style OJ fill:#4CAF50,color:#fff
    style RC fill:#4CAF50,color:#fff

Comandi Build per Modulo

Librerie JAR (devono essere installate)

# Obbligatorio: installare nel local Maven repository
cd MLib && mvn clean install
cd EeMlib && mvn clean install
cd MobileFineAdapterLib && mvn clean install
cd OtticoServiceJPA && mvn clean install
cd "REST Common" && mvn clean install

Applicazioni WAR

# UI principale
cd GeCo.Alfa && mvn clean package

# Service layer
cd GecoService && mvn clean package

# Elaborazione documenti
cd ElaborazioneService && mvn clean package

# Gateway PA
cd ConnessioneService && mvn clean package

# Ottico
cd OtticoService && mvn clean package

# MCTC VPN
cd VpnMctcService && mvn clean package

# Mobile (Spring Boot)
cd MobileFineAdapterServer && mvn clean package
cd MobileFineAdapterServerEar && mvn clean package

Quarkus (Java 11)

# Dev mode con live reload
cd REST && ./mvnw compile quarkus:dev

# Package per deploy
cd REST && ./mvnw clean package

Build Selettivo

Dopo aver modificato un solo modulo, ricostruisci solo quello e le sue dipendenze:

Ho modificato... Devo ricostruire...
MLib MLib (install) + tutti i WAR che lo usano
EeMlib EeMlib (install) + MobileFineAdapterServer, ElaborazioneService
GeCo.Alfa Solo GeCo.Alfa (package)
ConnessioneService Solo ConnessioneService (package)
REST Common REST Common (install) + REST
REST Solo REST (package o quarkus:dev)

Deploy su Docker Locale

Deploy Singolo Modulo

# 1. Build il modulo
cd ~/vscode-projects/sgv-ge.co
mvn clean package -pl GeCo.Alfa

# 2. Copia il WAR nella directory deployments del container Docker
cp GeCo.Alfa/target/GeCo.Alfa.war \
   ~/vscode-projects/sgv2-docker/be-geco/deployments/

# 3. WildFly auto-deploya il WAR (verifica logs)
cd ~/vscode-projects/sgv2-docker
docker-compose logs -f be-geco

Mapping Moduli - Container Docker

Modulo Container Docker Directory Deployments
GeCo.Alfa be-geco be-geco/deployments/
GecoService geco-service geco-service/deployments/
ElaborazioneService be-elb be-elb/deployments/
ConnessioneService fe-con fe-con/deployments/
OtticoService be-ott be-ott/deployments/

Deploy Multiplo

cd ~/vscode-projects/sgv-ge.co

# Build dipendenze
cd MLib && mvn clean install && cd ..

# Build moduli applicativi
cd GeCo.Alfa && mvn clean package && cd ..
cd GecoService && mvn clean package && cd ..
cd ElaborazioneService && mvn clean package && cd ..

# Deploy
cp GeCo.Alfa/target/GeCo.Alfa.war ~/vscode-projects/sgv2-docker/be-geco/deployments/
cp GecoService/target/GecoService.war ~/vscode-projects/sgv2-docker/geco-service/deployments/
cp ElaborazioneService/target/ElaborazioneService.war ~/vscode-projects/sgv2-docker/be-elb/deployments/

Verifica Deploy

# Verifica stato container
cd ~/vscode-projects/sgv2-docker && docker-compose ps

# Verifica deploy WAR
docker-compose exec be-geco ls -la /opt/wildfly/standalone/deployments/

# Verifica logs WildFly
docker-compose exec be-geco tail -f /opt/wildfly/standalone/log/server.log

# Test in browser
open http://localhost:8080/GeCo.Alfa

Workflow Quotidiano

  1. Mattina: Avvia ambiente Docker (make start)
  2. Sviluppo: Modifica codice in sgv-ge.co
  3. Build: mvn clean package -pl <modulo>
  4. Deploy: Copia WAR in sgv2-docker/<container>/deployments/
  5. Test: Verifica in browser su http://localhost:8080/
  6. Iterazione: Codice → Build → Deploy → Test
  7. Sera (opzionale): Ferma ambiente (make stop)