Suite à la reprise d’une application legacy en GWT pour un client, nous avons rencontré des problèmes lors de la compilation. En effet celle-ci demandait l’installation d’anciennes librairies non disponible sur les environnements actuels des développeurs.

L’idée était donc de founir une solution de compilation fonctionnelle sur tout environnement :

  • poste développeur

  • poste client

  • serveur de développement / intégration

Pour répondre à ce besoin nous avons opté pour l’utilisation de docker. Nous avons créé une image docker à partir d’une image maven, sur laquelle nous avons téléchargé les librairies GWT nécessaires à la compilation du projet. Ce qui donne le Dockerfile suivant :

Dockerfile.build
FROM maven:3.6-jdk-7

WORKDIR /var
RUN curl https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/google-web-toolkit/gwt-linux-1.5.3.tar.bz2 | tar xjf -

Nous avons ensuite créé un script permettant de lancer la compilation :

build-with-docker.sh
docker build -t mvn-gwt -f Dockerfile.build .
docker run \
  -v ~/.m2:/var/maven/.m2 \
  -v "$PWD":/usr/local/src/ \
  -w /usr/local/src/  \
  -ti --rm -u $(id -u) \
  -e MAVEN_CONFIG=/var/maven/.m2 \
  mvn-gwt \
  mvn -Duser.home=/var/maven -Dgoogle.webtoolkit.home=/var/gwt-linux-1.5.3 $1

A partir de ce script la compilation du projet peut être lancé depuis n’importe quel environnement en lançant simplement la commande :

./build-with-docker.sh <target_maven>