Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
custom:produzione_war_da_progetto_template_custom [2022/11/24 18:42]
giorgio.scali
custom:produzione_war_da_progetto_template_custom [2024/10/07 10:50] (versione attuale)
giorgio.scali [Creazione Webadmin war]
Linea 8: Linea 8:
  
  
-===Passaggio 1: Generazione della folder del progetto maven (esecuzione del file makeproj.bat) === +==== Passaggio 1: Generazione della folder del progetto maven (esecuzione del file makeproj*.bat) ====
-Prima di procedere con il processo di generazione della folder del progetto maven, verificare se si ha nel proprio pc la cartella webclientTemplate-archetype,​ normalmente presente sotto al proprio utente al seguente path : //​C:​\Users\nome.cognome\.m2\repository\com\geowebframework\//​. Se è presente, cancellare tutta la cartella webclientTemplate-archetype (non solo il contenuto!) e procedere con la generazione del progetto. ​+
  
-La prima cosa da fare per creare un progetto di base nel proprio pc cliccare sul seguente link e avviare il download della cartella ZIP {{ :​custom:​makegproj-4.6.x.zip |}} (oppure ​{{ :​custom:​makegproj.zip |}}per le versioni precedenti alla 4.6.X). Questa cartella contiene un file BATche una volta lanciato richiede due parametri:  +=== Procedura === 
-  * il nome del nuovo progetto maven da generare. Es: **mvn_project_name** +La prima cosa da fare per creare un progetto di base nel proprio pc cliccare sul seguente link e avviare il download della cartella ZIP, in base alla versione major del progetto da generare: 
-  * la versione di GeowebFramework,​ scelta tra quelle disponibili su Artifactory Es: **4.4.7**+  * {{ :​custom:​makegproj-4.6.x-release.zip |}} 
 +  * {{ :​custom:​makegproj-4.6.x.zip | makegproj-4.6.x.zip ​(PRE-RELEASE,​ @Deprecated)}} 
 +  * {{ :​custom:​makegproj-4.5.x.zip |}} 
 +  * {{ :​custom:​makegproj.zip |}} (per le versioni precedenti alla 4.5.X) 
 +Dopo aver decompresso makegproj-4.6.x.zipsalvare il file makegproj-4.6.x.bat nella cartella del repository di prodotto/​commessa. 
 +Step
 +  * doppio click su makegproj-X.bat 
 +  * inserire ​il nome del nuovo progetto maven da generare. Es: **mvn_project_name** 
 +  * inserire  ​la versione di GeowebFramework,​ scelta tra quelle disponibili su ArtifactoryEs:  
 +    * **4.6.0** 
 +    * **4.6.0-SNAPSHOT** 
 +    * **4.5.4** 
 +    * **4.4.19** 
 +    * **4.4.19-HOTFIX**
  
-Dopo aver decompresso makegproj.zip,​ salvare il file makeproj.bat in un'​apposita cartella (che dovrà ospitare il nuovo progetto). +La finestra di //shell// mostrerà l'​avanzamento del download. {{ :​custom:​shell_makeproj.png?​400 |}}
-E' buona prassi, anche se non mandatorio, che tale cartella sia una di quelle previste dal gestore della commessa, nelle folder del //​Repository di Commessa//. Quindi per esempio makeproj.bat andrebbe copiato nella folder //​internal_war//,​ destinato alla produzione del war per l'​ambiente interno.  +
-Una volta in posizione, eseguire makeproj.bat con un doppio click.  +
-In questo modo verrà aperta una finestra di //​shell// ​che mostrerà l'​avanzamento del download. {{ :​custom:​shell_makeproj.png?​400 |}} Alla fine del processo, la finestra si chiuderà automaticamente e si avranno due nuove cartelle: la cartella .git e una cartella con il nome del progetto (cioè quello inserito precedentemente in makeproj.bat). Quest'​ultima conterrà tutti i file di configurazione e le librerie necessarie. ​+
  
-Il file BATquindi, è utilizzato **UNA TANTUM**, cioè solo nella fase iniziale della creazione ​del nuovo progetto.+Alla fine del processola finestra si chiuderà automaticamente e si avrà una cartella con il nome del progetto ​(cioè quello inserito precedentemente in makeproj.bat) che conterrà tutti i file di configurazione con setting di base.
  
 +Il file makegproj*.bat,​ quindi, è utilizzato **una tantum**, cioè solo nella fase iniziale della creazione del nuovo progetto.
  
-===Passaggio 2: Personalizzazione dei file di configurazione === 
-Generalmente,​ per ogni cartella cosi generata (il cui nome è stato scelto prima da shell e che contiene il progetto maven del war), va modificato il file **pom.xml**,​ in cui deve essere aggiunta la giusta versione di GeowebFramework (la stessa utilizzata nel makegproj.bat) nel relativo tag: 
  
-<code xml><​com.geowebframework.version>​4.4.3</​com.geowebframework.version></​code>​ +==== Passaggio 2Personalizzazione dei file di configurazione ====
- +
-Nel **pom.xml** vanno inserite anche le dipendenze a eventuali altri plugin di Geoweb necessari all'​esecuzione del proprio progetto, come ad esempio:+
  
 +La prima operazione da fare è intervenire sul file **pom.xml**:​
 +  * verificare la **<​com.geowebframework.version>​** di GeowebFramework (che deve coincidere con quella usata nel makegproj.bat)
 +  * dichiarare le **<​dependency>​** da utilizzare, comprensive di versionamento:​
 <code xml><​dependency>​ <code xml><​dependency>​
  <​groupId>​com.geowebframework</​groupId>​  <​groupId>​com.geowebframework</​groupId>​
Linea 35: Linea 44:
  <​version>​1.0.0</​version>​  <​version>​1.0.0</​version>​
 </​dependency></​code>​ </​dependency></​code>​
- 
-[[Geoweb plugin|geoweb plugin]] 
  
 In aggiunta, devono essere eventualmente modificati anche alcuni file di configurazione. In particolare,​ nel percorso //​[nome_progetto]\src\main\resources\//​ ci sono: In aggiunta, devono essere eventualmente modificati anche alcuni file di configurazione. In particolare,​ nel percorso //​[nome_progetto]\src\main\resources\//​ ci sono:
   * Il file **configuration.properties**,​ che raccoglie tutti i dati configurabili del progetto, che rappresentano entità costanti, come ad esempio i dati di accesso al database; anche in questo caso, ogni parametro è memorizzato come una coppia di stringhe, una contiene il nome del parametro (cioè la chiave) e l'​altra memorizza il valore.   * Il file **configuration.properties**,​ che raccoglie tutti i dati configurabili del progetto, che rappresentano entità costanti, come ad esempio i dati di accesso al database; anche in questo caso, ogni parametro è memorizzato come una coppia di stringhe, una contiene il nome del parametro (cioè la chiave) e l'​altra memorizza il valore.
-  * Il file **log4j.properties**,​ che contiene tutte le informazioni (codificate come coppie chiave-valore) necessarie alla scrittura dei log di Maven. Il log, infatti, è uno strumento molto utile che va configurato nel modo corretto: esso raccoglie gli output dei diversi processi e, analizzando questi output, permette di capire cosa è accaduto in caso di errori.+  * Il file **log4j2.properties** (**log4j.properties**, pre 4.6.x), che contiene tutte le informazioni (codificate come coppie chiave-valore) necessarie alla scrittura dei log di Maven. Il log, infatti, è uno strumento molto utile che va configurato nel modo corretto: esso raccoglie gli output dei diversi processi e, analizzando questi output, permette di capire cosa è accaduto in caso di errori.
   * Il file **remapConfiguration.properties** che ha lo scopo di mappare i nomi delle proprietà all'​interno del **configuration.properties** con nomi di variabili d'​ambiente o di sistema.   * Il file **remapConfiguration.properties** che ha lo scopo di mappare i nomi delle proprietà all'​interno del **configuration.properties** con nomi di variabili d'​ambiente o di sistema.
   * Il file **webconfig.ini** che serve per alcune configurazioni della piattaforma Mapguide.   * Il file **webconfig.ini** che serve per alcune configurazioni della piattaforma Mapguide.
 Invece, nel percorso //​[nome_progetto]\src\main\webapp\WEB-INF\//​ si trovano: ​ Invece, nel percorso //​[nome_progetto]\src\main\webapp\WEB-INF\//​ si trovano: ​
   * Il **dispatcher-servlet.xml**,​ che serve da controller per le applicazioni web basate su Spring. Il contenuto è standard, ma, in particolari ambienti, alcuni tag non vengono usati e devono essere cambiati.   * Il **dispatcher-servlet.xml**,​ che serve da controller per le applicazioni web basate su Spring. Il contenuto è standard, ma, in particolari ambienti, alcuni tag non vengono usati e devono essere cambiati.
-  * Il file **web.xml**,​ che descrive l'​esecuzione dell'​applicazione web e contiene configurazioni per l'​accesso ai database.+  * Il file **web.xml**,​ che descrive l'​esecuzione dell'​applicazione web e contiene configurazioni per l'​accesso ai database. ​Utile per configurare quale spring-security.xml utilizzare
   * Infine, il file **spring-security.xml**,​ che raccoglie informazioni di autenticazione e di connessione al metadata-source.   * Infine, il file **spring-security.xml**,​ che raccoglie informazioni di autenticazione e di connessione al metadata-source.
    
 Le modifiche apportate ai vari file dipendono dal progetto, ma anche dall'​ambiente in cui il progetto deve essere utilizzato. Le modifiche apportate ai vari file dipendono dal progetto, ma anche dall'​ambiente in cui il progetto deve essere utilizzato.
  
-===Passaggio 3: produzione del WAR === +=== Note war versioni 4.6.x-release === 
-Terminate tutte le operazioni di configurazione e personalizzazione del progetto maven, in ogni cartella dei vari ambienti (interno, sviluppo, test, produzione, etc..) ​, bisogna assicurarsi di avere sotto la cartella dell'​ambiente specifico, a seconda dell'​OS,​ uno dei seguenti file:+ 
 +Sono provvisti nel modello 3 file spring-security.xml 
 +  - **spring-security.xml** (senza keycloak, da arricchire con eventuale configurazione Identity Provider del cliente) 
 +  - **spring-security-keycloak.xml** (specifico per keycloak) 
 +  - **spring-security-deprecated.xml** (senza keycloak, con vari meccanismi di autenticazione usati in passato, anche @Deprecated) 
 + 
 +Di default è utilizzato lo //​spring-security-keycloak.xml//​ 
 +Questa configurazione può essere modificata nel file **web.xml** 
 + 
 +<code xml> 
 +<!-- Spring Security STARTS --> 
 +<​context-param>​ 
 + <​param-name>​contextConfigLocation</​param-name>​ 
 + <​param-value>​ 
 + <!-- TODO CONFIGURE, choose one between: --> 
 + <!-- /​WEB-INF/​spring-security.xml --> 
 + <!-- /​WEB-INF/​spring-security-keycloak.xml --> 
 + /​WEB-INF/​spring-security-keycloak.xml 
 + </​param-value>​ 
 +</​context-param>​ 
 +</​code>​ 
 + 
 +Lasciare solo lo spring-security*.xml di interesse, eliminando gli altri, e verificare la coerenza nel web.xml 
 + 
 + 
 +Nel **pom.xml** sono commentati tutti i plugin disponibili allo stato attuale nel repository del framework. 
 +Come sempre, decommentare i necessari moduli ed eliminare gli altri. 
 +Aggiungere inoltre le dipendenze di eventuali repository di prodotto o di commessa. 
 + 
 + 
 +=== Note war versioni 4.5.x === 
 + 
 +Le versione 4.5.0-SNAPSHOT era, secondo corrette politiche aziendali, destinata solo allo sviluppo. Logiche di commessa hanno portato di fatto all'​utilizzo di questa versione. 
 +Il dispiegamento sui clienti ha forzato anche il relativo versionamento:​ 4.5.1, 4.5.2, etc.. 
 +Per le versioni 4.5.X **non è stato prodotto uno specifico makegproj.bat**. 
 +In attesa di uno specifico, la prassi da seguire è utilizzare il **makegproj.bat** precedente, avendo cura di modificare lo spring-security.xml in alcune parti 
 + 
 +dentro il tag 
 +<code xml> 
 +<http auto-config="​true"​ use-expressions="​true"​ disable-url-rewriting="​true">​ 
 +... 
 +</​http>​ 
 +</​code>​ 
 +va aggiunta la parte: 
 +<code xml> 
 +<​intercept-url pattern="/​resources/#​{ T(com.geowebframework.metadataservice.registry.GwReleaseInfos).getRevision() }/​fontawesome/​**"​ access="​permitAll"​ /> <​!--issue #​509-->​ 
 +<​intercept-url pattern="/​resources/#​{ T(com.geowebframework.metadataservice.registry.GwReleaseInfos).getRevision() }/​images/​favicon.png"​ access="​permitAll"​ /> 
 +<​intercept-url pattern="/​resources/#​{ T(com.geowebframework.metadataservice.registry.GwReleaseInfos).getRevision() }/​images/​${images.login.form.logo:​gw4_enterprise.png}"​ access="​permitAll"​ /> 
 +<​intercept-url pattern="/​resources/#​{ T(com.geowebframework.metadataservice.registry.GwReleaseInfos).getRevision() }/​${images.IndexBackground:​IndexBackground.jpg}"​ access="​permitAll"​ />  
 +</​code>​ 
 +immediatamente sotto la parte: 
 +<code xml> 
 +<​intercept-url pattern="/​resources/#​{ T(com.geowebframework.metadataservice.registry.GwReleaseInfos).getRevision() }/​icons/​**"​ access="​permitAll"​ /> 
 +</​code>​ 
 + 
 +Senza il fix potrebbe comparire navigando la schermata:​ 
 + 
 +{{:​custom:​error_missing_font_awesome_in_spring-security.png}} 
 + 
 + 
 + 
 +==== Passaggio 3: produzione del WAR ===
 + 
 +Terminate tutte le operazioni di configurazione e personalizzazione del progetto maven, bisogna assicurarsi di avere sotto la cartella dell'​ambiente specifico, a seconda dell'​OS,​ uno dei seguenti file:
   * makegwar.bat (Window)   * makegwar.bat (Window)
   * makegwar.sh (Linux)   * makegwar.sh (Linux)
Linea 58: Linea 128:
 Doppio click per eseguire il file. Si aprirà una finestra di //shell// che mostrerà l'​avanzamento dell'​operazione. Al termine della procedura, nella finestra verrà riportato un messaggio di successo se tutto è andato a buon fine, oppure un messaggio di errore in caso di eventuali problemi. Doppio click per eseguire il file. Si aprirà una finestra di //shell// che mostrerà l'​avanzamento dell'​operazione. Al termine della procedura, nella finestra verrà riportato un messaggio di successo se tutto è andato a buon fine, oppure un messaggio di errore in caso di eventuali problemi.
 Il file WAR viene automaticamente salvato all'​interno si **mvn_project_name/​target**. ​ Il file WAR viene automaticamente salvato all'​interno si **mvn_project_name/​target**. ​
- + 
 + 
 +--------------------------------- 
 + 
 +==== Creazione Webadmin war ==== 
 +**(Dalla versione 4.6.12)** 
 +[[https://​gitlab.com/​geowebframework/​geowebframework/​-/​issues/​1257|issue #1257]] 
 + 
 +=== Premessa === 
 +L'​eccessivo ingombro degli artefatti webadmin (circa 250MB), che andavano a finire su Artifactory ad ogni tag, combinato al contestuale cambiamento delle policy di rilascio che ha previsto un tag esclusivo per ogni fix (sulla quarta cifra di versionamento 4.6.x.y), ha spinto per la trasformazione del modulo maven gw-webadmin in jar, in maniera che potesse essere inglobato in un pom.xml generico per la creazione del war. 
 + 
 +Considerando anche gli effetti della [[https://​gitlab.com/​geowebframework/​geowebframework/​-/​issues/​1256|issue #1256]], i peso dell'​artifact gw-webadmin è passato da 250MB a meno di 2MB su Artifactory 
 + 
 +=== Procedura === 
 +Analogamente alla metodologia di produzione del war del webclient, è disponibile un template specifico da cui partire (valido per 4.6.* e 4.7.*) 
 + 
 +  * {{ :​custom:​makewebadmin-4.6.x.zip |}} 
 + 
 +Vanno eseguiti passaggi del tutto simili alla produzione dei war webclient. 
 + 
 +=== Note === 
 +In generale non ci sarà mai bisogno di aggiungere maven dependency al pom.xml. 
 + 
 +Le dipendenze che erano supportate precedentemente continuano ad esserlo 
 +Widget e servizi interni al progetto geowebframework di: 
 +  - gw-advanced 
 +  - gw-cms 
 +  - gw-approvals 
 +  - gw-mnemonic-code 
 +  - gw-3d-visualizer 
 +  - gw-workflow 
 +   
 +Widget e servizi esterni al progetto geowebframework 
 +  - gw-tree-collection (2.1.3) 
 + 
 +Widget e servizi deprecati:​ 
 +  - postevita 
 +  - gw-smartplatform 
 + 
 +Se necessario ulteriori plugin di commessa/​progetto che coinvolgano widget/tipi di menu possono essere sviluppati con la medesima modalità. 
 +L'​unica accortezza, nell'​eventuale aggiunta della relativa dependency al pom.xml del webadmin, **e solo se questa abbia come propria dependency webclient**, ​ è quella di aggiungere solo le class: 
 +  - pojo dei widget 
 +  - pojo modello dati 
 +  - XInitializerService.class che registra widget, tipi di menu e tipi di schede 
 + 
 +Questo dovrebbe essere fatto in una delle modalità consentite da maven, da adattare in base al caso specifico. 
 + 
  • custom/produzione_war_da_progetto_template_custom.1669311748.txt.gz
  • Ultima modifica: 2022/11/24 18:42
  • da giorgio.scali