Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
custom:development_artifactory_deploy_template [2020/03/27 12:43] mariasole.angelucci |
custom:development_artifactory_deploy_template [2022/11/28 16:51] (versione attuale) giorgio.scali |
||
---|---|---|---|
Linea 1: | Linea 1: | ||
====== Dispiegamento di un template su Artifactory ====== | ====== Dispiegamento di un template su Artifactory ====== | ||
- | [spiega come da un progetto di geoweb si possa creare un template su artifactory, che poi sarà richiamabile nelle varie maven build. Sia tramite .bat (per i configuratori, => link a guida specifica), che tramite eclipse (creare un nuovo plugin di geoweb da eclipse partendo da un template scaricato da artifactory)] | + | Ogni volta che si ha una struttura Maven che ci si ritrova ad utilizzare spesso, potrebbe essere una buona idea generare da essa un template su Artifactory. |
- | Una volta creato un nuovo progetto Maven che rappresenta un plugin di Geoweb, si deve associare ad esso un template su Artifactory, tramite il procedimento descritto di seguito. Si ricorda che, ad ogni nuovo plugin, deve anche essere associato un nuovo branch su Gitlab. | + | |
- | - Come prima cosa, è necessario creare il file JAR del progetto utilizzando Eclipse. Dopo aver eseguito il //clean// del progetto Maven, cliccare con il tasto destro sulla cartella del progetto, selezionare **Run As** e poi **Maven install**; in questo modo verrano compilati tutti i file sorgente e, nella sezione **Project explorer** del progetto, verrà creata la cartella Target, contenente i file JAR. | + | ===== Vantaggi Sviluppatori ===== |
- | - A questo punto, entrare nella cartella del proprio pc contenente il branch locale di Git dove si sta lavorando al nuovo plugin e, al suo interno, aprire il prompt dei comandi ed eseguire il seguente: <code>mvn archetype:create-from-project</code> | + | |
- | - Il passo successivo è la sostituzione di alcuni file all'interno dell'archivio JAR che è stato generato nel percorso {git_plugin_directory}\target\generated-sources\archetype\target. In questo percorso è presente un file dal nome {nome_plugin}-archetype-{versione_plugin}.jar. Aprire l'archivio JAR con un'applicazione per la decompressione degli archivi (ad esempio 7zip) e spostarsi nel percorso META-INF\maven: qui dentro, sostituire il contenuto del file archetype-metadata.xml con ciò che segue: <code xml> | + | * Poter tirare su un nuovo ambiente di lavoro, senza tirarsi giù l'intero codice sorgente di geoweb, ma semplicemente creando un nuovo progetto da template maven e configurandoselo. Il vantaggio è di lavorare con una black-box, avere un ambiente di sviluppo più snello, non oberato dai continui build del codice eseguiti da Eclipse |
+ | * Poter disporre rapidamente di una base funzionante per creare un qualsivoglia nuovo plugin | ||
+ | |||
+ | |||
+ | ===== Vantaggi Configuratori ===== | ||
+ | |||
+ | * avere la possibilità agli utenti configuratori di autoprodursi il war seguendo la procedura guidata automatizzata descritta qui, pensando solo alla parte di configurazione, alla versione di geoweb e da quali plugin utilizzare | ||
+ | |||
+ | |||
+ | ===== Esempi Template ===== | ||
+ | * **gw-webapp-template** (**webclientTemplate**, pre 4.6.X), rappresenta lo scheletro di una generica webapp di geoweb, dove sono presenti solo tutte le parti configurabili, ed il pom.xml dove si possono includere tutte le dipendenze necessarie (recuperate da repository pubblici o da artifactory). Questo progetto maven è gia stato configurato in quest'ottica dentro il codice sorgente dalla versione 4.4.3. E' stato quindi reso disponibile questo template maven tramite Artifactry. Ora può essere usato da uno sviluppatore esterno a geoweb che, non volendo tirarsi giù l'intero codice, potrebbe far girare geoweb o prodursi un war semplicemente creando un nuovo progetto da template maven e configurandoselo. Il vantaggio è di lavorare con una black-box, avere un ambiente di sviluppo più snello, non oberato dai continui build del codice eseguiti da Eclipse. Il fatto che questo progetto sia anche un template maven ospitato in artifactry è anche basilare per dare la possibilità agli utenti configuratori di autoprodursi il war seguendo la procedura guidata automatizzata descritta qui. | ||
+ | * **gwPlugin**, rappresenta lo scheletro di un generico plugin di geoweb, già formato nella struttura dei package e dei file di configurazione. E' pensato per essere usato dagli sviluppatori, interni ed esterni, come una buona base di partenza per produrre velocemente un nuovo plugin per geoweb. Di norma va usato in congiunzione con webclientTemplate. | ||
+ | |||
+ | |||
+ | ===== Procedura ===== | ||
+ | |||
+ | * Come prima cosa, è necessario creare il file JAR del progetto utilizzando Eclipse. Dopo aver eseguito il //clean// del progetto Maven, cliccare con il tasto destro sulla cartella del progetto, selezionare **Run As** e poi **Maven install**; in questo modo verrano compilati tutti i file sorgente e, nella sezione **Project explorer** del progetto, verrà creata la cartella //target//, contenente il file JAR . | ||
+ | * A questo punto, entrare nella cartella del proprio PC contenente il repository locale di Git dove si sta lavorando al nuovo plugin e, al suo interno, aprire il prompt dei comandi ed eseguire il seguente: <code>mvn archetype:create-from-project</code> | ||
+ | * Il passo successivo è la sostituzione di alcuni file all'interno dell'archivio JAR che è stato generato nel percorso **{git_plugin_directory}\target\generated-sources\archetype\target**. In questo percorso è presente un file dal nome **{nome_plugin}-archetype-{versione_plugin}.jar**. Aprire l'archivio JAR con un'applicazione per la decompressione degli archivi (ad esempio 7zip) e spostarsi nel percorso **META-INF\maven**: qui dentro, sostituire il contenuto del file **archetype-metadata.xml** con ciò che segue: <code xml> | ||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||
- | <archetype-descriptor | + | <archetype-descriptor xsi:schemaLocation="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0 http://maven.apache.org/xsd/archetype-descriptor-1.1.0.xsd" name="gw-webapp-template" |
- | xsi:schemaLocation="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0 | + | xmlns="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0" |
- | http://maven.apache.org/xsd/archetype-descriptor-1.1.0.xsd" name="webclientTemplate" | + | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> |
- | xmlns="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0" | + | <requiredProperties> |
- | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> | + | <requiredProperty key="warName"> |
- | <requiredProperties> | + | <defaultValue>webclient</defaultValue> |
- | <requiredProperty key="warName"> | + | </requiredProperty> |
- | <defaultValue>webclient</defaultValue> | + | <requiredProperty key="gwVersion"> |
- | </requiredProperty> | + | </requiredProperty> |
- | <requiredProperty key="gwVersion"> | + | </requiredProperties> |
- | </requiredProperty> | + | <fileSets> |
- | </requiredProperties> | + | <fileSet filtered="true" encoding="UTF-8"> |
- | <fileSets> | + | <directory>src/main/resources</directory> |
- | <fileSet filtered="true" encoding="UTF-8"> | + | <includes> |
- | <directory>src/main/resources</directory> | + | <include>**/*.txt</include> |
- | <includes> | + | <include>**/*.xml</include> |
- | <include>**/*.txt</include> | + | <include>**/*.properties</include> |
- | <include>**/*.xml</include> | + | </includes> |
- | <include>**/*.properties</include> | + | </fileSet> |
- | </includes> | + | <fileSet filtered="true" encoding="UTF-8"> |
- | </fileSet> | + | <directory>src/main/webapp</directory> |
- | <fileSet filtered="true" encoding="UTF-8"> | + | <includes> |
- | <directory>src/main/webapp</directory> | + | <include>**/*.xml</include> |
- | <includes> | + | </includes> |
- | <include>**/*.xml</include> | + | </fileSet> |
- | </includes> | + | <fileSet encoding="UTF-8"> |
- | </fileSet> | + | <directory>src/main/resources</directory> |
- | <fileSet encoding="UTF-8"> | + | <includes> |
- | <directory>src/main/resources</directory> | + | <include>**/*.ini</include> |
- | <includes> | + | </includes> |
- | <include>**/*.ini</include> | + | </fileSet> |
- | </includes> | + | <fileSet encoding="UTF-8"> |
- | </fileSet> | + | <directory>src/main/webapp</directory> |
- | <fileSet encoding="UTF-8"> | + | <includes> |
- | <directory>src/main/webapp</directory> | + | <include>**/*.tld</include> |
- | <includes> | + | </includes> |
- | <include>**/*.tld</include> | + | </fileSet> |
- | </includes> | + | <fileSet encoding="UTF-8"> |
- | </fileSet> | + | <directory></directory> |
- | <fileSet filtered="true" encoding="UTF-8"> | + | <includes> |
- | <directory>.settings</directory> | + | <include>makegwar.bat</include> |
- | <includes> | + | </includes> |
- | <include>**/*.xml</include> | + | </fileSet> |
- | </includes> | + | </fileSets> |
- | </fileSet> | + | |
- | <fileSet encoding="UTF-8"> | + | |
- | <directory>.settings</directory> | + | |
- | <includes> | + | |
- | <include>**/*.container</include> | + | |
- | <include>**/*.component</include> | + | |
- | <include>**/*.name</include> | + | |
- | <include>**/*.jsdtscope</include> | + | |
- | <include>**/*.prefs</include> | + | |
- | </includes> | + | |
- | </fileSet> | + | |
- | <fileSet filtered="true" encoding="UTF-8"> | + | |
- | <directory></directory> | + | |
- | <includes> | + | |
- | <include>.classpath</include> | + | |
- | <include>.project</include> | + | |
- | </includes> | + | |
- | </fileSet> | + | |
- | </fileSets> | + | |
</archetype-descriptor> | </archetype-descriptor> | ||
+ | |||
+ | |||
</code> | </code> | ||
- | - Sempre all'interno dell'archivio {nome_plugin}-archetype-{versione_plugin}.jar, aprire il file pom.xml nella cartella archetype-resources e sostituire le righe <code xml> | + | * Sempre all'interno dell'archivio **{nome_plugin}-archetype-{versione_plugin}.jar**, aprire il file **pom.xml** nella cartella archetype-resources e sostituire la riga <code xml> |
- | <finalName>nome_plugin</finalName> | + | <finalName>nome_plugin</finalName></code> con <code xml> |
+ | <finalName>${warName}</finalName></code> e la riga <code xml> | ||
<com.geowebframework.version>4.4.3</com.geowebframework.version></code> con <code xml> | <com.geowebframework.version>4.4.3</com.geowebframework.version></code> con <code xml> | ||
- | <finalName>${warName}</finalName> | ||
<com.geowebframework.version>${gwVersion}</com.geowebframework.version></code> | <com.geowebframework.version>${gwVersion}</com.geowebframework.version></code> | ||
- | - Per finire, andare sul sito di Artifactory seguendo il link [[http://artifactory.geowebframework.com/artifactory/webapp/#/artifacts/browse/tree/General/gw-release]] e accedere con le proprie credenziali. Sulla sinistra si può trovare un albero di contenuti: aprire gw-release e cliccare sul pulsante **Deploy**. Caricare il file avendo cura di cambiare il groupId con "com.geowebframework" e abilitare tutte le spunte. Cliccare infine su **Deploy** e verificare il caricamento nell'albero al path giusto. | + | * Infine, andare sul sito di Artifactory seguendo il link [[http://artifactory.geowebframework.com/artifactory/webapp/#/artifacts/browse/tree/General/gw-release]] e accedere con le proprie credenziali. Come mostrato in figura, sulla sinistra del sito si può trovare un albero di contenuti: aprire **gw-release** e cliccare sul pulsante **Deploy**, che si trova in alto a destra. {{ :custom:artifactory_deploy_img1.png?400 |}}Dalla finestra che si apre, è possibile caricare il file **{nome_plugin}-archetype-{versione_plugin}.jar**, avendo cura di cambiare il groupId con "com.geowebframework" e di abilitare tutte le spunte disponibili; per terminare la procedura, cliccare infine **Deploy**. Si può, a questo punto, verificare il caricamento del progetto nel giusto percorso all'interno di gw-release. |