2 de agosto de 2011

Clojure + Leiningen + Eclipse

A primeira grande dificuldade de se aprender uma linguagem é encontrar um bom ambiente de desenvolvimento. Não há IDEs específicas para Clojure, ainda. Mas, alguns plugins de IDEs conhecidas tem se destacado, há plugins para: NetBeans, Eclipse, IntellijIdea, Emacs, TextMate e etc. Hoje irei focar no ambiente Eclipse, que no Windows parece se destacar.

Leiningen

Leiningen é uma ferramenta bastante parecida com o Maven (Java). Nesta ferramenta é fácil criar um projeto, com uma estrutura de pastas predefinidas e também gerenciar dependências (bibliotecas .jar).

A primeira coisa é ir a este site https://github.com/technomancy/leiningen e realizar o download. O classpath deve conter a variável %JAVA_HOME%, indicando a instalação do Java.
No Windows é preciso executar o script lein.bat que irá realizar o download do jar necessário para o caminho C:\Documents and Settings\<seu usuário>\.lein\self-installs, caso algo dê errado, faça o download do jar leiningen-1.5.2-standalone.jar e crie a variável de ambiente LEIN_JAR.

Após baixar o leiningen e configurar o classpath, já é possível executá-lo através da linha de comandos. A ferramenta possui alguns comandos, basta digitar "lein help" na linha de comando para ter uma lista completa:


Para treinar o Clojure, basta digitar "lein repl", que o REPL do Clojure irá abrir e você já pode testar o poder da linguagem:


Para criar um novo projeto, faça "lein new projeto", a seguinte estrutura de pastas será criada:

Para quem já está acostumado com o Maven, já entendeu a estrutura, mas não há segredo, basicamente foram criados dois ambientes: o de desenvolvimento e o de testes. Dentro da pasta "src/projeto" há o arquivo "core.clj", que corresponde ao arquivo inicial, ou principal do projeto, assim como em "test/projeto/test" há um outro arquivo de mesmo nome para testes.

Na raiz do projeto há o arquivo "project.clj", que é utilizado pelo Leiningen para organizar as dependências do projeto, é preciso adicionar a biblioteca "lein-eclipse" para adicionar comandos que fazem o eclipse entender a estrutura criada como um projeto, para isto modifique seu project.clj para:

(defproject projeto "1.0.0-SNAPSHOT"
  :description "FIXME: write description"
  :dependencies [[org.clojure/clojure "1.2.1"]
                 [org.clojure/clojure-contrib "1.2.0"]]
  :dev-dependencies [[lein-eclipse "1.0.0"]])

Depois disto, dentro da pasta "projeto", execute "lein deps", para fazer o download da biblioteca.
E depois disto, execute "lein eclipse", agora o projeto já pode ser importado para o eclipse.

Eclipse

No Eclipse (aqui estou usando a versão 3.6), instale o plugin CounterClockWise da seguinte forma: Vá em Help>Install new software>Add
E digite:
Name: Clojure Plugin
Location: http://ccw.cgrand.net/updatesite
Marque a opção "Clojure Programming" e conclua a instalação.
Após instalar o plugin e reiniciar o Eclipse, vá em File>Import>Import Existing Projects into workspace e importe o seu projeto criado anteriormente.

Pronto, agora já está tudo configurado e você verá a mesma estrutura de pastas:


Pronto! Seu ambiente está configurado. Vamos testar escrevendo uma função simples:

(ns projeto.core)

(defn ola
([] "Olá mundo!")
 ([nome] (println (str "Olá " nome ))))

A função acima imprime "Olá mundo!" na tela caso nenhum argumento seja passado, e imprime "Ola <nome>" caso o nome seja informado como parâmetro.
Para executar a função, vamos iniciar uma sessão REPL (Read-Eval-Print Loop), que é o ambiente interativo do Clojure, isso pode ser feito de duas formas:

Leiningen (Comando "lein repl")
Eclipse (Botão direito do mouse>Run as > Clojure Application), isto irá abrir um console, onde é possível digitar a função e analisar os resultados:

Nenhum comentário:

Postar um comentário