On va voir dans ce billet comment installer Java puis Maven et/ou Gradle sur Debian ou Ubuntu, et aussi comment passer facilement d’une version de Java à une autre.
Par le passé, Java était fourni par Sun et n’était pas disponible dans les dépôts des systèmes Linux. Maintenant que l’OpenJDK a acquis ses lettres de noblesse, on peut installer Java facilement avec une commande apt-get
et ce sans recourir au passage par le site d’Oracle – à condition bien sûr que les build GPL d’Oracle du JDK nous conviennent.
1. Installer Java
Pour installer l’OpenJDK en version 11 sur Debian ou Ubuntu, il vous suffit de faire:
$ sudo apt-get install openjdk-11-jdk
Sur des versions récentes de Debian (bullseye) ou Ubuntu (20.04) vous aurez aussi la possibilité d’installer le JDK en version 13, voire plus récent. On peut même encore trouver la version 8 dans certaines distributions mais pas pour longtemps …
Si vous n’avez besoin que du JRE, vous pouvez l’installer comme suit:
$ sudo apt-get install openjdk-13-jre
Et si vous n’avez pas besoin d’interface graphique, la version headless
vous suffira:
$ sudo apt-get install openjdk-11-jdk-headless
2. Passer d’une version de Java à une autre
Une fois le ou les JDK installés, on peut les lister avec:
$ sudo update-java-alternatives --list
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
java-1.13.0-openjdk-amd64 1311 /usr/lib/jvm/java-1.13.0-openjdk-amd64
Pour définir la version 11 comme version à utiliser:
$ sudo update-java-alternatives --set java-1.11.0-openjdk-amd64
Ensuite, on a bien:
$ java -version
openjdk version "11.0.9.1" 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
A noter que la commande update-java-alternatives
supporte la complétion Bash, ce qui est appréciable quand on passe d’un JDK à l’autre.
Si vous ne disposez pas de cette commande, il faudra installer le paquet java-common
:
$ sudo apt-get install java-common
On vient de voir que pour installer un JDK et passer d’une version de Java à une autre, nous n’avons eu besoin d’aucun autre paquet tiers ou utilitaire provenant de GitHub car tout est disponible dans les dépôts du système Debian.
2.1. Avec AdoptOpenJDK
La façon de passer d’un JDK à un autre avec update-java-alternatives
que je viens de décrire fonctionne aussi si on installe les JDK d’AdoptOpenJDK en ajoutant le dépôt Debian de ce dernier.
3. Installer Maven
Pour installer Maven, on va de nouveau utiliser le dépôt standard du système.
En effet, Maven n’évoluant plus beaucoup, Debian Bullseye et Ubuntu 20.04 qui est basée sur cette dernière proposent Maven dans sa dernière version:
$ apt-get update && apt-cache show maven
...
Get:4 http://deb.debian.org/debian bullseye/main amd64 Packages [7958 kB]
Fetched 8165 kB in 2s (4028 kB/s)
Reading package lists... Done
Package: maven
Version: 3.6.3-1
...
3.1. Installer la complétion Bash pour Maven
Le paquet Maven de Debian n’inclue pas la complétion Bash 🙁
C’est un peu dommage étant donné les nombreux flags et cibles possibles de la commande mvn
.
Heureusement, quelqu’un s’est chargé d’écrire un script Bash pour cela. Il semble même que plusieurs personnes se soient essayées à l’exercice mais le dépôt suivant semble le plus pertinent et est cité sur le site de Maven:
https://github.com/juven/maven-bash-completion
Pour installer la complétion Bash pour Maven:
$ sudo wget https://raw.github.com/juven/maven-bash-completion/master/bash_completion.bash --output-document /etc/bash_completion.d/mvn
Il existe aussi un autre dépôt basé sur le premier et que je n’ai pas testé: https://github.com/rakus/extensible-maven-completion
4. Installer Gradle
Contrairement à Maven, la version de Gradle des dépôts Debian et Ubuntu est trop ancienne:
$ sudo apt-cache show gradle
Package: gradle
Architecture: all
Version: 4.4.1-10
...
On pourrait installer Gradle « à la main » en téléchargeant l’archive de sa dernière version, puis en décompressant l’archive et finalement en créant un lien vers le binaire de Gradle.
On va plutôt ici l’installer avec liar, qui fera pour nous ces différentes étapes, et nous fera gagner du temps:
$ liar -l install gradle https://downloads.gradle.org/distributions/gradle-6.7.1-bin.zip
Pour peu que le répertoire ~/bin
existe et qu’il soit dans le PATH
du système, la commande gradle
sera alors automatiquement disponible ensuite et ce sans rien changer aux fichiers .bashrc
ou .profile
!
4.1. Installer la complétion Bash pour Gradle
Gradle disposant d’un paquet fournissant la complétion Bash, il suffit pour l’installer de:
$ sudo apt-get install gradle-completion
Après quoi:
$ gradle<TAB>
buildEnvironment - Displays all buildscript dependencies declared in root project.
components - Displays the components produced by root project.
dependencies - Displays all dependencies declared in root project.
dependencyInsight - Displays the insight into a specific dependency in root project.
dependentComponents - Displays the dependent components of components in root project.
help - Displays a help message.
init - Initializes a new Gradle build.
model - Displays the configuration model of root project.
projects - Displays the sub-projects of root project.
properties - Displays the properties of root project.
tasks - Displays the tasks runnable from root project.
wrapper - Generates Gradle wrapper files.
5. Conclusion
On a vu comment installer Java, Maven et Gradle sur Debian et Ubuntu en s’appuyant le plus possible sur les paquets fournis par le système.
On verra dans un prochain billet comment installer et utiliser GraalVM.