Em projetos de software, sejam grandes ou pequenos, pela facilidade e otimização do tempo, busca-se a reutilização de código, isso inclui também a utilização de bibliotecas de terceiros, gerenciar e manter essas dependências acaba se tornando complicado e tomando muito tempo com o crescimento do projeto. Assim, para facilitar existem os gerenciadores de dependências, que agilizam processos de instalação, remoção, atualização de dependências entre outras atividades.
Para quem vem do PHP, análogo ao Composer, em Clojure temos o Leiningen,
um gerenciador de projetos e dependências para Clojure. Vamos ver como
instalar e criar um projeto básico com ele.
Eu estou utilizando a distribuição linux Manjaro, talvez possa mudar
alguns comandos ou caminhos no sistema que você estiver usando.
Instalação
Primeiramente vamos fazer o download do script de instalação.
Vamos mover esse script para o diretório /bin
, e atribuir propriedade
de executável para ele.
Em seguida podemos rodar o comando lein
que ele irá fazer o download
dos pacotes necessários.
Pronto, a instalação do Leiningen está feita. Um recurso que o Clojure oferece para o desenvolvedor é o REPL, sigla para Read-Eval-PrintLoop. REPL é um prompt onde podemos testar trechos de código sem precisar criar um projeto inteiro para isso, basta rodar o REPL. Podemos acessá-lo a partir do Leiningen, executando dentro do diretório de um projeto, toda a estrutura do mesmo fica disponível, funções, propriedades, etc.
A partir disto estamos no prompt REPL e podemos testar código Clojure direto no terminal, para sair basta digitar:
Criando um projeto
Agora vamos criar um projeto inicial, podemos rodar o comando a seguir para criar um novo projeto chamado “hello”.
Agora temos um diretório chamado hello, onde está nosso projeto com sua
estrutura, não vamos nos aprofundar muito na estrutura nesse momento,
único destaque é o diretório src
, onde fica o código do projeto
criado.
Na raiz do projeto existe um arquivo chamado project.clj
, fazendo
novamente um paralelo com o composer.json
, esse é o arquivo que o
Leiningen utiliza para organizar as dependências, propriedades do
projeto entre outras coisas.
Vamos testar, primeiro abra o arquivo project.clj
e coloque o código a
seguir abaixo da linha :dependencies
, ainda dentro dos parênteses.
Ficará semelhante a isso
Aqui definimos qual a função principal, que sera executada quando rodarmos o projeto.
Agora entramos no diretório do projeto e executamos o seguinte comando
lein run
A saída deverá ser semelhante a esta.
Hey Hello, World
Se abrirmos o arquivo core.clj
dentro de src
, veremos que nossa
função principal foo recebe um parâmetro, que foi o Hey
que mandamos
por linha de comando e imprime a frase Hey Hello World
.
Instalando dependências
Para instalar uma dependência no projeto com o Leiningen é bem simples,
similar a gerenciadores de dependências de outras linguagens, no arquivo
project.clj
devemos adicionar as dependências que queremos instalar.
Para esse exemplo utilizaremos a biblioteca clj-http
, que possibilita
fazermos requisições http, então devemos adicioná-la na propriedade
:dependencies
do arquivo, ficando similar ao código a seguir.
todas as dependências que necessitamos adicionamos nesse formato, após isto podemos rodar o seguinte comando para o leiningen fazer a instalação das mesmas.
lein deps
Após a finalização, a biblioteca estará disponível para usarmos, vamos
abrir nosso arquivo principal core.clj
e modificá-lo usando a biblioteca
que acabamos de instalar para fazer uma requisição a uma API.
Na linha 2
fazemos um require do namespace clj-http.client
e colocando
como álias client, na linha 7
estamos utilizando a função get fazendo
uma requisição para o endpoint passado como parâmetro e imprimindo o
resultado.
Conclusão
Essa é a estrutura básica de um projeto Clojure, como instalar dependências no projeto, a partir disto podemos evoluir para algo mais complexo, para ver mais recursos do Leiningen acesse o site do projeto https://leiningen.org.
Dúvidas, sugestões… podem deixar comentários, e compartilhar caso gostou :D.