quinta-feira, abril 21, 2011

Montando console do groovy no Eclipse

Se você quer ter um console do groovy no eclipse rapidamente, sem fazer download de plugins/IDEs, segue abaixo a dica.
Não precisa nem fechar o workspace, hehe...

1) Adicione o groovy no sistema se não tiver
No ubuntu basta digitar:

$ sudo apt-get install groovy

2) Crie novo projeto java no eclipse

Ctrl + N > Java Project > Next
Em Project Name digitei "console"
(nao precisa de printscreen disso né?)


3) Crie seu arquivo "console.java"

Ctrl + N > Class
Digite "console para o nome da classe. Sim, minusculo mesmo, pois isso não será uma classe...
Marque pra criar o metodo main, pra facilitar.
(tbm nao precisa de print disso...esse artigo é pra programadores java que estao indo pro grails...)

4) Adicione o groovy como ferramenta externa no eclipse

Menu: Run > External Tools > External Tools Configurations


No lado esquerdo, selecione Program e clique no icone de novo

Name: põe o que quiser... botei "groovy"
Location: /usr/bin/groovy (no caso do Ubuntu..no windows é só apontar pro groovy.exe)
Working Directory: ${workspace_loc:/console} (clique em "Browse Workspace" e selecione o projeto java)
Arguments: console.groovy
Apply pra não perder tudo

Por enquanto fizemos o seguinte: ao chamar a app externa groovy, o eclise fará o mesmo que:

$ cd {caminho-do-seu-workspace}/console
$ /usr/bin/groovy console.groovy


Importante: o groovy só executa arquivos .groovy. Entao precisamos criar
o link para o console.java

$ ln -s {caminho-do-seu-workspace}/console/console.java {caminho-do-seu-workspace}/console/console.groovy

No meu caso:

topera@topera-desktop:/dados/topera/workspace/console/src$ ls -l /home/topera/topera/workspaceteste/console/
total 8
-rw-r--r-- 1 topera topera 364 2011-04-21 12:18 console.class
lrwxrwxrwx 1 topera topera 55 2011-04-21 12:28 console.groovy -> /home/topera/topera/workspaceteste/console/console.java
-rw-r--r-- 1 topera topera 136 2011-04-21 12:18 console.java

Blz, voltando ao eclipse, devemos ter a mesma tela:

Pra ficar mais facil de chamar o groovy, na aba "Common", marque o check em "Display in favorites menu"
Apply > Close > Save
(se nao guardar este check, é bug do eclispe, faca novamente, hehe)

Vamos testar

Clique na seta setinha do botao do print abaixo ou va em:
Run > External Tools > groovy
Não aconteceu nada...imprima algo no console e tente novamente.
Pronto! Já estamos fazendo o eclipse chamar o groovy e este está lendo nosso arquivo java!
(obs: se nao funcionar pode ser pq a variavel de ambiente JAVA_HOME nao esta setada...)

5) Adicionando atalho de teclado

Pra nao ficarmos clicando toda hora, vamos adicionar o atalho

Window > Preferences > Filtre "keys > Na direita filtre por "run last"
Selecione "Run last launched external Tool" e adicione o atalho de sua preferencia.
Eu botei o Ctrl+Enter, pra ficar igual ao GroovyConsole / SQLDeveloper

6) Desligando erros de sintaxe

Vamos tranformar esse java em groovy.
Troque o codigo-fonte por isso.

print "hello groovy"
Execute. Blz. Tudo ok. Agora vamos desligar o validador java (*)
(*) Lembre-se da regra basica:

"Todo codigo java funciona em groovy, mas nem todo codigo groovy funciona em java".

Por este motivo o validador está acusando erro.
Para desliga-lo, e ficarmos apenas com o auto-complete do java (muito util por sinal), faça:

a) Botao Direito no codigo-fonte > Preferences > Report Problemas as you Type (desmarque)

Depois:

b) Botao Direito na pasta do projeto > Properties > Filtre por "validation" > Marque "Enable project specific settings" e "suspen all validators"

E por ultimo

c) Botao Direito na pasta do projeto > Properties > Filtre por "builders" > Desmarque o java


Obs1: neste ultimo item 6) nao sei qual combinacao das 3 coisas resolve o problema. Sei que as tres dão certo :)
Obs2: se ainda assim nao funcionar, apague o console.java e crie novamente.


Tutorial feito com Eclipse 3.5.2, Ubuntu 10.04


UPDATE 1:
Para o autocomplete do java funcionar, é preciso ter um minimo de classe montado.
Entao, deixe esse trecho de codigo no final do console.java

class a {
static {
"".isEmpty(); //teste o autocomplete aqui...
}
}

UPDATE 2:
Se não quiser ter todo este trabalho é só usar o GroovyConsole, na web.

Um comentário:

  1. Já sei...o prints nao tao abrindo...perdi a paciencia com o Blogger...fica assim mesmo...

    ResponderExcluir