Lancer Flower depuis votre IDE

13/03/2018

Déployer vos applications WEB dans Tomcat avec Maven avec une seule commande : tomcat7:run

Introduction

Cet article décrit comment déployer une interface web dans un serveur tomcat embarqué dans votre projet Maven. Ainsi il est possible de tester vos développements et paramétrages de Flower sans quitter votre IDE.

Le plugin Tomcat pour Maven permet de déployer une ou plusieurs applications WEB dans le conteneur de servlet Tomcat depuis un goal Maven. La configuration du plugin doit être ajoutée dans la liste des plugins (<plugins/> du pom.xml) de votre projet.

Prérequis :

  • Notion de Maven

Déployer votre projet

La configuration ci-dessous vous permet de déployer votre projet Maven directement dans le conteneur de servlet Tomcat.

<plugin>
	<groupId>org.apache.tomcat.maven</groupId>
	<artifactId>tomcat7-maven-plugin</artifactId>
	<version>2.2</version>
	<configuration>		
		<port>9080</port>
		<path>/custom-app</path>
		<warSourceDirectory>${project.build.directory}/${project.artifactId}-${project.version}</warSourceDirectory>
		<warDirectory>${project.build.directory}/${project.artifactId}-${project.version}.war</warDirectory>
		<systemProperties>
			<file.encoding>utf-8</file.encoding>
			<java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
		</systemProperties>
		<additionalClasspathDirs>
			<additionalClasspathDir>${my.webapp.config}</additionalClasspathDir>
		</additionalClasspathDirs>
	</configuration>
</plugin>

Quelques explications :

  • port : port utilisé pour démarrer Tomcat (attention aux conflits si un processus utilise déjà ce port)
  • path : contexte permettant d’accéder à l’application WEB (ici : http://localhost:9080/custom-app)
  • warSourceDirectory : dossier de stockage des fichiers du module pour la génération du WAR à déployer
  • warDirectory : WAR généré par le module
  • systemProperties : liste de propriétés à ajouter sur la JVM du serveur tomcat
  • additionalClasspathDirs : liste de dossiers de configuration à ajouter dans le classpath la JVM du serveur tomcat

Si votre projet requiert une authentification à travers un login module JAAS, il est nécessaire :

  • d’ajouter un fichier jaas.config dans le répertoire src/main/conf du type :

    FileNetP8WSI {
        com.filenet.api.util.WSILoginModule required;
    };
    
  • de le référencer dans le noeud systemProperties de la configuration du plugin : <java.security.auth.login.config>${project.basedir}/src/main/conf/jaas.config</java.security.auth.login.config>

Déploiement d’une webapp externe (comme flower) !

Le plugin Tomcat Maven vous permet également de déployer des applications WEB tierces. Afin de déployer une stack Flower, intégrez la configuration suivante.

<plugin>
	<groupId>org.apache.tomcat.maven</groupId>
	<artifactId>tomcat7-maven-plugin</artifactId>
	<version>2.2</version>
	<configuration>	
		<systemProperties>
			<flower.docs.config.dir>${my.webapp.config}</flower.docs.config.dir>
			<flower.docs.core.addon>classpath:flower-docs-services-drools.xml</flower.docs.core.addon>
			<file.encoding>utf-8</file.encoding>
			<java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
		</systemProperties>
		<webapps> 
			<webapp> 
				<groupId>com.flower.docs.gui</groupId>
				<artifactId>flower-docs-gui-webapp</artifactId>
				<version>${flower.docs.version}</version>
				<type>war</type>  
				<asWebapp>true</asWebapp> 
			   <contextPath>/custom-app</contextPath>
			</webapp>
			<webapp> 
				<groupId>com.flower.docs.core</groupId>
				<artifactId>flower-docs-core-webapp</artifactId>
				<version>${flower.docs.version}</version>
				<type>war</type>   
				<asWebapp>true</asWebapp> 
			   <contextPath>/flower-docs-ws</contextPath>
			</webapp>
			<webapp> 
				<groupId>com.flower.docs.arender</groupId>
				<artifactId>flower-docs-arender-hmi</artifactId>
				<version>${flower.docs.version}</version>
				<type>war</type>   
				<asWebapp>true</asWebapp> 
			   <contextPath>/flower-docs-arender</contextPath>
			</webapp>
		</webapps>  	
	</configuration>
</plugin>