Installation Maven Windows : Différence entre versions
m |
(Aucune différence)
|
Version actuelle en date du 3 novembre 2016 à 16:01
Les principes de Maven décrit pour Ubuntu restent valables dans le cadre de Windows. L'installation de Maven s'effectue en copiant simplement les binaires et après quelques configurations des variables d'environnement.
Sommaire
Votre avis
Nobody voted on this yet
|
|
Installation
Le contenu du tar apache-maven-2.2.1-bin.tar.gz
est placé dans un répertoire par exemple C:\APPS\maven
.
Création repository
Le repository est créé dans le repertoire repository
sous C:\APPS\maven
.
Configuration
La configuration de l'instance s'effectue en modifiant le fichier settings.xml
global ou spécifique à l'utilisateur, comme explicité dans l'article de configuration.
L'emplacement de ce repository doit etre configuré au niveau de Maven dans le fichier settings.xml
.
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>C:/APPS/maven/repository</localRepository>
Afin d'utiliser le serveur Nexus mis en place, il faut ajouter un mirroir dans le fichier de configuration. Par défaut, toutes les demandes passeront par ce serveur. Au niveau du noeud mirrors
, une configuration est ajoutée ainsi, comme décrit sur le site de Nexus :
- https://support.sonatype.com/entries/20943003-Configure-Maven-to-Download-from-Nexus
- http://books.sonatype.com/nexus-book/reference/config-maven.html
Dans le cadre de cet exemple, Nexus est hébergé sur la machine 192.168.1.5
derrière un serveur Apache.
Il faut configurer :
- Un nouveau mirroir qui servira toutes les demandes;
- Un profile avec une URL quelconque qui sera surchargée par le mirroir;
- Activation du profile.
Ainsi toutes les demandes seront dirigés vers le serveur Nexus.
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>Local nexus.</name>
<url>http://192.168.1.5/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<!-- Enable snapshots for the built in central repo to direct -->
<!-- all requests to nexus via the mirror -->
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!-- make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
Variable d'environnement
L'utilisation de Maven nécessite des variables d'environnement afin de pouvoir l'exécuter en ligne de commande. Les variables nécessaires sont:
- M2_HOME:
C:\APPS\maven
, optionel; - Path: Ajouter
%M2_HOME%\bin
.
Configuration script de démarrage
Les scripts de Maven sont particulièrement bien organisés et offrent de grandes possibilités de configurations. Cependant il est primordiale de les étudier afin de bien comprendre les fonctionnement mis en place.
Comme dans le cas de la mise en place de Tomcat, il peut être souhaité de ne pas interagir avec les variables d'environnement du poste en les gérant à la volée. ce qui permet de configurer une version de la JRE / JDK spécifique pour une installation de Maven.
En étudiant le script mvn.bat
, il est constaté qu'un script mavenrc_pre.bat
est exécuté si trouvé. Celui-ci permet donc de mettre en place des variables d'environnement spécifiques.
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
Cependant, ce fichier est recherché à l'emplacement %HOMEDRIVE%%HOMEPATH%\mavenrc_pre.bat
, si la variable HOME
n'est pas disponible. Dans le cadre de cette installation, les variables sont résolues ainsi.
C:\temp>echo %HOMEDRIVE% C: C:\temp>echo %HOMEPATH% \Users\etienne
Par conséquent, le système n'est pas totalement opérationel car il va dépendre de l'utilisateur connecté. Une petite modification du script va permettre de charger le script mavenrc_pre.bat
placé dans le répertoire bin
de l'instance Maven. Pour cela, il suffit de modifier la définition de la variable HOME
avec un principe repris depuis les script de démarrage de Tomcat.
La première instructions set "HOME=%~dp0"
permet de récupérer le répertoire du script exécuté, soit mvn.bat
. Dans le cadre de cette installation, la variable HOME
est alors initialisée avec la valeur C:\APPS\maven\bin\
.
La deuxième instruction set "HOME=%HOME:~0,-1%"
permet de supprimer le dernier caractère \
.
Et c'est ainsi que qu'il est possible d'exécuter le script mavenrc_pre.bat
dans le répertoire des binaires.
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
@REM if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
set "HOME=%~dp0"
set "HOME=%HOME:~0,-1%"
@REM Execute a user defined script before this one
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
set ERROR_CODE=0
@REM set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" @setlocal
if "%OS%"=="WINNT" @setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo ERROR: JAVA_HOME not found in your environment.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto chkMHome
echo.
echo ERROR: JAVA_HOME is set to an invalid directory.
echo JAVA_HOME = "%JAVA_HOME%"
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation
echo.
goto error
:chkMHome
if not "%M2_HOME%"=="" goto valMHome
if "%OS%"=="Windows_NT" SET "M2_HOME=%~dp0.."
if "%OS%"=="WINNT" SET "M2_HOME=%~dp0.."
if not "%M2_HOME%"=="" goto valMHome
echo.
echo ERROR: M2_HOME not found in your environment.
echo Please set the M2_HOME variable in your environment to match the
echo location of the Maven installation
echo.
goto error
:valMHome
:stripMHome
if not "_%M2_HOME:~-1%"=="_\" goto checkMBat
set "M2_HOME=%M2_HOME:~0,-1%"
goto stripMHome
:checkMBat
if exist "%M2_HOME%\bin\mvn.bat" goto init
echo.
echo ERROR: M2_HOME is set to an invalid directory.
echo M2_HOME = "%M2_HOME%"
echo Please set the M2_HOME variable in your environment to match the
echo location of the Maven installation
echo.
goto error
@REM ==== END VALIDATION ====
:init
@REM Decide how to startup depending on the version of windows
@REM -- Windows NT with Novell Login
if "%OS%"=="WINNT" goto WinNTNovell
@REM -- Win98ME
if NOT "%OS%"=="Windows_NT" goto Win9xArg
:WinNTNovell
@REM -- 4NT shell
if "%@eval[2+2]" == "4" goto 4NTArgs
@REM -- Regular WinNT shell
set MAVEN_CMD_LINE_ARGS=%*
goto endInit
@REM The 4NT Shell from jp software
:4NTArgs
set MAVEN_CMD_LINE_ARGS=%$
goto endInit
:Win9xArg
@REM Slurp the command line arguments. This loop allows for an unlimited number
@REM of agruments (up to the command line limit, anyway).
set MAVEN_CMD_LINE_ARGS=
:Win9xApp
if %1a==a goto endInit
set MAVEN_CMD_LINE_ARGS=%MAVEN_CMD_LINE_ARGS% %1
shift
goto Win9xApp
@REM Reaching here means variables are defined and arguments have been captured
:endInit
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
@REM -- 4NT shell
if "%@eval[2+2]" == "4" goto 4NTCWJars
@REM -- Regular WinNT shell
for %%i in ("%M2_HOME%"\boot\classworlds-*) do set CLASSWORLDS_JAR="%%i"
goto runm2
@REM The 4NT Shell from jp software
:4NTCWJars
for %%i in ("%M2_HOME%\boot\classworlds-*") do set CLASSWORLDS_JAR="%%i"
goto runm2
@REM Start MAVEN2
:runm2
%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Dmaven.home=%M2_HOME%" org.codehaus.classworlds.Launcher %MAVEN_CMD_LINE_ARGS%
if ERRORLEVEL 1 goto error
goto end
:error
if "%OS%"=="Windows_NT" @endlocal
if "%OS%"=="WINNT" @endlocal
set ERROR_CODE=1
:end
@REM set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" goto endNT
if "%OS%"=="WINNT" goto endNT
@REM For old DOS remove the set variables from ENV - we assume they were not set
@REM before we started - at least we don't leave any baggage around
set MAVEN_JAVA_EXE=
set MAVEN_CMD_LINE_ARGS=
goto postExec
:endNT
@endlocal & set ERROR_CODE=%ERROR_CODE%
:postExec
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
@REM pause the batch file if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
cmd /C exit /B %ERROR_CODE%
Une fois mis en place, il est alors possible d'effectuer toutes les initialisations nécessaires. Dans l'exemple suivant, les variables mises en place sont les suivantes.
Paramètre | Valeur |
---|---|
JAVA_HOME | Emplacement de la JAVA_HOME, référencant une JDK, permettant d'utiliser une version spécifique de Jave pour Maven. |
M2_HOME | Emplacement de l'installation de Maven. |
MAVEN_OPTS | Options d'exécution de Maven, comme l'augmentation de la mémoire allouée. |
M2_REPO | Emplacement du dépot local. |
Le contenu du script est simple.
set "JAVA_HOME=C:\Apps\Java\jdk1.6.0_33_x64"
set "M2_HOME=C:\Apps\maven\"
set MAVEN_OPTS=-Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m
set "M2_REPO=C:\Apps\maven\repository"
Ainsi seule la modification de la variable PATH
devient nécessaire, afin de pouvoir accéder au script mvn.bat
. L'impact sur la machine est réduite au minimum.
A noter que la variable M2_HOME
pourrait ne pas être spécialisée car elle est calculée dans le script, et M2_REPO
est récupérée depuis le fichier de configuration settings.xml
.
Version 3.3.X
Dans le cadre des versions 3.3.X, les scripts sont légèrement modifiés. Par défaut, le script exécuté est mvn.cmd
qui recherche les fichiers mavenrc_pre.bat
et mavenrc_pre.cmd
dans le répertoire HOME de l'utilisateur, généralement un sous répertoire de C:/users
.
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre
Il n'est donc pas possible de faire une spécialisation globale à la plateforme, mais pour chaque utilisateur. De plus, la variable M2_HOME
est calculée en fonction du contexte d'exécution.
if not "_%M2_HOME:~-1%"=="_\" goto checkMCmd
set "M2_HOME=%M2_HOME:~0,-1%"
Donc en reprenant l'exemple précédent, seule la personnalisation de la mémoire et de l'emplacement de la JDK peuvent être conservées, comme dans l'exemple suivant.
set JAVA_HOME="C:\Apps\Java\jdk1.8.0_45"
set MAVEN_OPTS=-Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m
Ceci permet de positionner les variables ainsi.
Paramètre | Valeur |
---|---|
JAVA_HOME | Emplacement de la JAVA_HOME, référencant une JDK, permettant d'utiliser une version spécifique de Jave pour Maven. |
MAVEN_OPTS | Options d'exécution de Maven, comme l'augmentation de la mémoire allouée. |
A noter en cas d'utilisation d'un "émulateur" de shell Unix, comme avec GitBash
, le script exécuté n'est pas celui spécifique pour Windows, mais celui pour Unix soit mvn
. Ainsi le script de spécialisation n'est pas mavenrc_pre.bat
ou mavenrc_pre.cmd
mais /etc/mavenrc
ou "$HOME/.mavenrc"
, comme indiqué au démarrage du script.
if [ -z "$MAVEN_SKIP_RC" ] ; then
if [ -f /etc/mavenrc ] ; then
. /etc/mavenrc
fi
if [ -f "$HOME/.mavenrc" ] ; then
. "$HOME/.mavenrc"
fi
fi
Le contenu du fichier, dans le répertoire HOME de l'utilisateur, contiendra les commandes suivantes.
export JAVA_HOME="c:/Apps/Java/jdk1.8.0_45"
export MAVEN_OPTS="-Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m"
Update
Version 3.3.3
La mise à jour est aussi simple que l'installation. Il suffit de télécharger la version et de la déployer sur la machine. Il est plus simple de déposer le contenu de l'archive dans le même emplacement, en remplacement, que la précédente version soit C:\APPS\maven
. Ainsi, tous les paramétrages mis en place resteront valides.
En fonction des modifications réalisées, il faut reprendre :
- Les paramétrages dans le fichier
settings.xml
; - Le fichier
mavenrc_pre.bat
.
Version 3.3.9
La mise à jour de cette version s'effectue exactement comme pour la 3.3.3