gwinstguide:idxinstguide:installazione_maven

Apache Maven è uno strumento di gestione di progetti software basati su Java e build automation. Maven usa un costrutto conosciuto come Project Object Model (POM), ovvero un file XML che descrive le dipendenze fra il progetto e le varie versioni di librerie necessarie al progetto, nonché le dipendenze fra le librerie stesse. Ciò significa che Maven effettua automaticamente il download delle librerie Java e dei plug-in dai vari repository: questo permette di recuperare in modo uniforme i diversi file JAR e di poter spostare il progetto in maniera indipendente da un ambiente all'altro avendo la sicurezza di utilizzare sempre le stesse versioni delle librerie.

Tutto ciò è utile nella creazione autonoma dei file WAR per i diversi progetti di sviluppo o di commessa.

Per l'installazione di Maven è necessario assicurarsi che il Java Development Kit (JDK) sia installato e che la variabile d'ambiente JAVA_HOME sia configurata. Questo può essere fatto in uno dei seguenti modi: * Aprire il Pannello di controllo, scegliere la sezione Programmi, poi Programmi e funzionalità e controllare se una versione di Java o del JDK compaiono tra i programmi installati.

Oppure:

  • Aprire il prompt dei comandi e digitare
    java -version

    Se il comando è riconosciuto e compaiono le informazioni della versione, allora vuol dire che Java è installato correttamente e anche la variabile d'ambiente è stata impostata nel modo giusto.

Oppure:

  • Aprire il Pannello di controllo, poi Sistema e sicurezza, poi ancora Sistema e, infine, aprire il collegamento Impostazioni di sistema avanzate: a questo punto si aprirà una finestra, come è visibile nella figura seguente.

Selezionare il pulsante Variabili d'ambiente… e controllare che, tra le variabili di sistema, esista una variabile JAVA_HOME con associato il percorso corretto.

Installazione del JDK e configurazione della variabile JAVA_HOME

Se il JDK non risulta installato, è necessario eseguire il download del software al seguente link: https://www.oracle.com/it/java/technologies/javase/jdk11-archive-downloads.html.

Una volta scaricata la versione adeguata del JDK (la versione attualmente in uso è la 11), eseguire il file e installare il software. Terminata la procedura, JDK risulterà installato nel computer, per esempio nel percorso C:\Program Files\Java\jdk-11.0.2. Quello che rimane da fare è configurare la variabile d'ambiente JAVA_HOME.

Per fare questo, seguire il percorso per aprire la finestra di modifica delle variabili d'ambiente (Pannello di controlloSistema e sicurezzaSistemaImpostazioni di sistema avanzateVariabili d'ambiente…). Se la variabile di sistema esiste, controllare che il percorso a cui fa riferimento sia quello giusto. Se, invece, non esiste, attraverso il pulsante Nuova… creare una nuova variabile che abbia come nome JAVA_HOME e come valore il percorso in cui è stato installato il JDK.

Scaricare la versione binary del software al seguente link https://maven.apache.org/download.cgi. Una volta scaricato il file, deve essere estratto in un percorso adatto, ad esempio all'interno di C:\Program Files. Infine, aggiungere alla variabile di sistema Path il percorso scelto. Come è mostrato in figura, una volta selezionata la variabile di sistema Path, basta cliccare sul pulsante Modifica… e, nella finestra che si apre, cliccare su Nuovo e poi aggiungere il giusto percorso.

Quando Apache Maven è stato installato, viene creata una cartella di repository locale, chiamata .m2\repository. Essa viene salvata di default nel percorso C:\Users\{your-username}\.m2\repository ed è importante perché, quando un progetto Maven viene compilato, vengono scaricate e salvate all'interno di questa cartella tutte le librerie necessarie, le dipendenza del progetto e i file JAR dei plugin.

NOTE IMPORTANTI

Con le ultime versioni, dalla 3.8.1, Maven esce con una configurazione di default, non aggirabile, che blocca tutte le chiamate HTTP (insicure) ai repository. Il nostro artifactory non è attualmente in HTTPS. Vengono quindi, al lancio di comandi come in fase di mvn package, errori tipo

from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories

Esempio errore:

[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.450 s
[INFO] Finished at: 2021-04-07T01:08:28-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project MassBank2NIST: Could not resolve dependencies for project MassBank2NIST:MassBank2NIST:jar:0.0.2-SNAPSHOT: Failed to collect dependencies at edu.ucdavis.fiehnlab.splash:core:jar:1.8: Failed to read artifact descriptor for edu.ucdavis.fiehnlab.splash:core:jar:1.8: Could not transfer artifact edu.ucdavis.fiehnlab.splash:core:pom:1.8 from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [EBI (http://www.ebi.ac.uk/intact/maven/nexus/content/repositories/ebi-repo/, default, releases+snapshots), releases (http://gose.fiehnlab.ucdavis.edu:55000/content/groups/public, default, releases+snapshots)] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

La cosa migliore sarebbe aggiornare i nostri repository allo standard HTTPS. Il meccanismo del mirror check non è attualmente disabilitabile in alcuna maniera. E' previsto un tag <mirrors> da configurare sotto il proprio setting.xml, come descritto sul sito ufficale e vari workaround qui, ma non sembrano funzionare per la nostra configurazione.

In attesa di una risoluzione si consiglia quindi vivamente di utilizzare una versione precedente alla 3.8.1 come la apache-maven-3.6.3-bin.zip

Maven fornisce un alto livello di customizzazione e, infatti, possono essere definite diverse variabili per decidere come il servizio dovrà lavorare.

Il file settings.xml è un file di configurazione messo a disposizione proprio per personalizzare le impostazioni di Maven. Esso contiene tutti gli elementi che vengono usati per definire l'esecuzione di Maven a livello globale, e non del singolo progetto: tali elementi sono descritti come tag XML e includono valori come l'ubicazione del repository locale, i server di repository remoti e le informazioni di autenticazione.

Ottenere la password da Artifactory

Prima di procedere alla modifica, è necessario recuperare la password criptata che viene fornita da Artifactory tramite il seguente link: http://artifactory.geowebframework.com/artifactory/webapp/#/profile. Cliccando sul link, si apre una finestra di accesso: per entrare nel sito, è sufficiente inserire come username quello aziendale (nel formato nome.cognome) e come password quella di accesso al pc aziendale. A questo punto, viene aperta una nuova pagina, in cui deve essere inserita nuovamente la password:

Cliccare, infine, sul pulsante Unlock: in questo modo la password criptata verrà generata e sarà possibile copiarla negli appunti e quindi salvarla in un file di appoggio.

Modifica del file di configurazione

Solitamente, esistono due percorsi in cui può trovarsi il file settings.xml:

  • La cartella in cui è stato installato Maven: {MAVEN_HOME}/conf/settings.xml
  • La cartella dell'utente: {USER}/.m2/settings.xml

Se esistono entrambi i file, si noti che le impostazioni relative alla cartella dell'utente hanno maggiore priorità delle altre. Se, invece, nella cartella di utente non esiste tale file, è necessario crearlo.

Trovato o creato il file di configurazione, si deve modificare, al suo interno, il blocco servers e il blocco profiles. (per l'ultima versione del file: https://gitlab.com/geowebframework/geowebframework/-/raw/master/ci_settings.xml?inline=false)

Nel tag servers vanno aggiunte le seguenti informazioni:

<servers>
     <server>
           <id>gw-release</id>
           <username>mario.rossi</username>
           <password>PasswordDiMarioRossi</password>
     </server>
     <server>
           <id>gw-snapshot</id>
           <username>mario.rossi</username>
           <password>PasswordDiMarioRossi</password>
    </server>
    <server>
          <id>archetype</id>
          <username>mario.rossi</username>
          <password>PasswordDiMarioRossi</password>
    </server>
    <server>
          <id>gw-hotfix</id>
          <username>mario.rossi</username>
          <password>PasswordDiMarioRossi</password>
    </server> 
</servers>

Si noti che i tag username dovranno corrispondere al proprio utente aziendale e nei tag password dovrà essere incollata la password criptata che è stata precedentemente generata.

Inserire, poi, all'interno del tag profiles, quanto segue:

<profiles>
<profile>
      <id>artifactory</id>
      <repositories>
           <repository>
                <snapshots>
		    <enabled>false</enabled>
		</snapshots>
                <id>archetype</id>
                <url>http://artifactory.geowebframework.com/artifactory/gw-release</url>
           </repository>
           <repository>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
                <id>gw-release</id>
                <name>gw-release</name>
                <url>http://artifactory.geowebframework.com/artifactory/gw-release</url>
          </repository>
          <repository>
	       <snapshots>
	           <enabled>false</enabled>
	       </snapshots>
	       <id>gw-hotfix</id>
               <name>gw-hotfix</name>
               <url>http://artifactory.geowebframework.com/artifactory/gw-hotfix</url>
          </repository>
          <repository>
               <releases>
	           <enabled>false</enabled>
	       </releases>
               <id>gw-snapshots</id>
               <name>gw-snapshots</name>
               <url>http://artifactory.geowebframework.com/artifactory/gw-snapshots</url>
          </repository>
     </repositories>
     <pluginRepositories>
          <pluginRepository>
               <snapshots>
                    <enabled>false</enabled>
               </snapshots>
               <id>gw-release</id>
               <name>libs-release</name>
               <url>http://artifactory.geowebframework.com/artifactory/libs-release</url>
          </pluginRepository>
          <pluginRepository>
               <releases>
	           <enabled>false</enabled>
	       </releases>
               <id>snapshots</id>
               <name>libs-snapshot</name>
               <url>http://artifactory.geowebframework.com/artifactory/libs-snapshot</url>
          </pluginRepository>
     </pluginRepositories>
</profile>
</profiles>

Infine, aggiungere il tag activeProfiles e il suo contenuto:

<activeProfiles>
     <activeProfile>artifactory</activeProfile>
</activeProfiles>
  • gwinstguide/idxinstguide/installazione_maven.txt
  • Ultima modifica: 2023/05/16 09:26
  • da giada.podelvento