A compléter
???
Sommaire :
Objectifs
L'objectif principal est de pouvoir construire, sur la base du fichier war généré :
- Un fichier zip permettant une installation sur un serveur
- Un fichier jar contenant le fichier War et un serveur d'application (Tomcat) permettant son installation sur un poste Linux ou Mac
- Un fichier exécutable .exe qui encapsule le fichier jar pour une installation sur un poste Windows.
L'utilisateur pourra indiquer qu'il accepte la licence, préciser l'emplacement de l'installation et créer les raccourcis dans son menu de démarrage via l'interface d'installation. Il est possible d'ajouter d'autres éléments à ce programme d'installation (demander les paramètres d'accès à la base de données par exemple)
Processus
Le processus est lancé par la tache Maven install (mvn install).
Les opérations à effectuer son décrites dans le pom.xml, elles sont définies comme suit :
- Suppression des répertoires et fichiers de la dernière install
- Copie du répertoire datarelease en data dans le répertoire de préparation de l'install serveur
- Copie du war dans le répertoire de l'install serveur
- Copie d'un fichier lisezmoi dans le répertoire de préparation de l'installeur
- Copie d'un fichier war dans le répertoire de préparation de l'installeur
- Copie du serveur Tomcat dans le répertoire de préparation de l'installeur (et dézip)
- Changement des paramètres du serveur dézippé
- Changement dans le fichier du nom du service Tomcat
- Création du jar
- Création de l'exécutable
Éléments nécessaires
Pour fonctionner l'installeur utilise:
- les tâches décrites dans le pom.xml
- le Tomcat déposé dans /src/util/utils/tomcat
- 7zip déposé dans /src/util/utils/7zip
- /datarelease qui contient le fichier config.properties pré-paramétré pour une fonctionnement de l'application en production. Ce répertoire peut contenir d'autre fichier de paramétrage en fonction des besoins applicatifs. Lors de la construction de l'installeur, il sera renommé en /data, le paramétrage du Tomcat embarqué dans l'installeur contient une variable application.config.location qui pointera vers le fichier de configuration du répertoire /data.
- un répertoire installeur utilisé pour faire le package izpack. Ce répertoire contient une page d'accueil lisezmoi, la description de l'installation (licence, chemin par défaut, description, ..) et les raccourcis des menus. La documentation complète de l'outil utilisé est disponible ici.
Éléments à modifier
Pom.xml
variables
<your.standalone-compiler.version>4.3.2</your.standalone-compiler.version><zip.location>${basedir}/src/main/util/utils/7zip/7za.exe</zip.location><izpack.application.name>Example</izpack.application.name>
<your.standalone-compiler.version>4.3.2</your.standalone-compiler.version><zip.location>${basedir}/src/main/util/utils/7zip/7za.exe</zip.location><izpack.application.name>Example</izpack.application.name>
- your.standalone-compiler.version permet de spécifier la version du plugin izpack
- zip.location permet de préciser le chemin d'accès à l'outil 7zip. Le chemin est à changé en fonction de votre installation ( chemin et système Linux ou Windows).
- izpack.application.name permet de préciser le nom qui sera utiliser par izpack pour l'appel au service Tomcat sous Windows. Le nom ne doit pas contenir de caractères spéciaux ni point ".", ni tiret "-".
Tâches Ant
L'ensemble des tâches Ant sont dans le plugin maven-antrun-plugin. Elles suivent le processus décrit plus haut.
Il est possible d'ajouter ici ses propres tâches.
Par exemple l'ajout d'une documentation d'installation dans la livraison serveur :
<copy file="${basedir}/target/${project.build.finalName}.war" tofile="${basedir}/target/serverzip/chainedit.war" />
<copy file="${basedir}/src/main/doc/docs/installation.pdf" tofile="${basedir}/target/serverzip/installation.pdf" />
h4.
<copy file="${basedir}/target/${project.build.finalName}.war" tofile="${basedir}/target/serverzip/chainedit.war" /> <copy file="${basedir}/src/main/doc/docs/installation.pdf" tofile="${basedir}/target/serverzip/installation.pdf" /> h4.
Installeur
Packages d'install
Shortcut
Logo
Licence
Texte de présentation
Page d'accueil
Fichier de configuration pour l'exécutable
Les modifications dans Tomcat
A priori, il n'est pas nécessaire de toucher à ces éléments, mais l'explication est néanmoins utile pour les administrateurs qui voudraient installer l'application à parti du fichier zip sur un serveur Linux ou Windows.
Dans le apache
Dézipper le apache-tomcat-x.x.x.zip Modifier les fichiers comme indiqué ci-dessous en ajoutant les lignes précisées au début de chaque fichier. Attention à la sauvegarde des .sh sous Windows à faire sous Eclipse pour éviter des problèmes de caractères sous Linux. Rezipper le apache-tomcat-x.x.x.zip et le mettre dans src/main/util/utils/tomcat
Le service.bat
- Au début : set CATALINA_HOME=$INSTALL_PATH\apache-tomcat-6.0.29\
- A la fin remplacer :"%EXECUTABLE%" US%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties;-Dapplication.config.location=$INSTALL_PATH\data\config.properties" --JvmMs 256 --JvmMx 512
Ceci est valable pour une installation serveur si l'on souhaite utiliser le fichier de configuration du répertoire /data.
Le catalina.bat
set CATALINA_OPTS = "-Dapplication.config.location=$INSTALL_PATH\data\config.properties"
Ceci est valable pour une installation serveur si l'on souhaite utiliser le fichier de configuration du répertoire /data.
Le catalina.sh
export CATALINA_OPTS = "-Dapplication.config.location=$INSTALL_PATH/data/config.properties"
Ceci est valable pour une installation serveur si l'on souhaite utiliser le fichier de configuration du répertoire /data.
Explication
Au lancement l'application regarde si application.config.location existe. Si oui, il prend ce fichier de config. Sinon il prend celui qui est dans properties. Cette information est définie dans le applicationContext.xml :
<bean id="propertyConfigurer"> <property name = "locations"> <list> <value>classpath:/properties/config.properties</value> <value>file:${ application.config.location }</value> </list> </property> <property name = "ignoreResourceNotFound" value="true" /> </bean>