Maven - alandrade21/docsCompartilhados GitHub Wiki

Por algum motivo, a distribuição de maven que vem nos sistemas baseados em Ubuntu é um repack da versão original.

Esse repack pode apresentar alguns problemas em setups fora do usual, por exemplo, quando necessário utilizar JDK 7.

Essa página mostra como instalar o maven padrão e como manter várias versões de maven na máquina.

Identificando o Problema

Rode o comando mvn -version.

O resultado abaixo mostra a versão disponível via ubuntu:

Apache Maven 3.6.3
Maven home: /usr/share/maven
...

Abaixo a saída da versão apache:

Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: /home/andre/opt/apache-maven-3.8.8
...

Em alguns casos, ao rodar o mvn com java 7, pode ocorrer seguinte erro:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/codehaus/plexus/classworlds/launcher/Launcher : Unsupported major.minor version 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

Esse erro pode indicar que você está utilizando um repack do mvn gerado pelo ubunto, ou uma versão mais nova do mvn que não suporta mais java 7.

Em ambos os casos será necessário instalar uma versão do apache mvn compatível com java 7.

Instalando e configurando várias versões do maven

A versão oficial do maven pode ser baixada do endereço https://maven.apache.org/download.cgi.

É importante notar o avido da própria apache de que a versão 3,9+ requer JDK 8+ para funcionar.

Nesta página vamos instalar as versões 3.9.5 e 3.8.8.

  1. Baixe o arquivo compactado dos binários de cada versão.

  2. Descompacte cada pacote e mova as pastas descompactadas para o local onde deseja que essas versões fiquem. Por exemplo ~/opt/apache-maven-3.8.8 e ~/opt/apache-maven-3.9.5.

  3. Configure o sistema de opções do linux para ambas as versões com os comandos:

    sudo update-alternatives --install /usr/bin/mvn mvn /home/andre/opt/apache-maven-3.8.8/bin/mvn 400
    sudo update-alternatives --install /usr/bin/mvn mvn /home/andre/opt/apache-maven-3.9.5/bin/mvn 500

    Troque o caminho para os binários de acordo com seu setup. Troque o valor do número de prioridade (o último parâmetro) de acordo com sua preferência.

Você pode verificar essa configuração com o comando:

update-alternatives --display mvn

E finalmente pode trocar a versão do maven em uso com o comando:

sudo update-alternatives --config mvn
⚠️ **GitHub.com Fallback** ⚠️