Mac OS X + Downgrade de Maven = Problemas!
Esse fim de semana, estava fazendo pesquisas sobre forma de compilação de projeto Adobe Flex (esse conteúdo também irá virar post) utilizando o Apache Maven. E em determinado momento precisei fazer um downgrade do Maven 3.x para 2.x, até ai tranquilo, pois eu tinha acabado de fazer a instalação do 3.x, então sabia de cabeça quais os arquivos de configuração alterei.
Mas "a vida é uma caixinha de surpresas"... E de fato, para minha surpresa após realizar o downgrade e fazer uma reconfiguração das variáveis de sistema para apontar para esta versão, meu Maven parou de funcionar por completo!! Nem mesmo um comando básico como para exibir a versão funcionava.
$ mvn -v
Comando para exibir a versão
Quando eu executava qualquer tipo de comando para o Maven recebia uma excessão Java.
$ mvn -v
Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher
Excessão ao executar comando Maven
Depois desse erro ocorrer, baixei todas as versões que estavam disponíveis do Maven no site acreditando fielmente de que havia sido problema de download corrompido e ou falha minha ao reconfigurar as variáveis na instalação.
Cheguei a remover todos os arquivos que baixei, remover todas as configurações que havia feito e reiniciar a máquina (a velha história do sai do desliga o fusquinha sai do fusquinha e depois de um tempo recomeça o processo). Mas nem mesmo essa simpatia resolveu... ehehehh...
Óbvio que enquanto fazia todos esses processos já estava pesquisando para ver se alguém alguma vez na vida já havia tido esse tipo de problema e por incrível que pareça, pesquisas com palavras chave somente sobre Maven não me resultaram em nada!! Foi quando me ocorreu a idéia de que isso poderia ser um problema isolado para Mac's, e esse foi quando encontrei o post do Cyntech falando sobre esse problema e então resolvi falar sobre ele na nossa língua!
Esse erro ocorre pelo seguinte ponto. Em uma das atualizações do Mac, junto com a nova versão do Java ele também instalou a versão 3.0.3 do maven em um diretório do sistema.
Como descobrir isso e corrigir para utilizar a versão que você deseja?
Vamos ao passo a passo então:
Abra um terminal, porque vamos brincar com alguns comandos!!
$ which mvn
/usr/bin/mvn
Comando para exibir de onde está buscando determinado aplicativo
A segunda linha diz de onde ele vem e na grande maioria das vezes (a menos que você tenha alterado) isso é um link simbólico para outro ponto da máquina.
Vamos então buscar para onde isso está sendo "linkado".
$ ls -la /usr/bin/mvn
lrwxr-xr-x 1 root wheel 24 11 Mar 18:05 /usr/bin/mvn -> /usr/share/maven/bin/mvn
Exibe detalhes de um link simbólico
Como podemos ver ele está referenciando para "/usr/share/maven..." mas, novamente, normalmente isso deve ser um link simbólico para outro ponto. Portanto vamos investigar novamente:
$ cd /usr/share/
$ ls -la maven
lrwxr-xr-x 1 root wheel 16 11 Mar 18:05 maven -> java/maven-3.0.2
Então, o que vamos fazer é alterar esse link simbólico para a que nós desejamos.
Onde no comando abaixo a pasta "/opt/public/technology/apache-maven-2.2.1/" é o diretório onde instalei meu Maven.
$ sudo mv maven maven.temp
$ sudo ln -s /opt/public/technology/apache-maven-2.2.1/ maven
$ mvn -v
Apache Maven 2.2.1 (r801777; 2009-08-07 05:16:01+1000)
Pronto.
Como pode ser visto na saída do comando "mvn -v" A versão corrente do Maven é a 2.2.1.