Criando nosso primeiro projeto Clojure

Vamos seguir nosso tutorial, hoje vou explicar como conseguimos criar um projeto Clojure.
Estava pensando e resolvi fazer esse artigo em duas partes, vamos explicar como criar um projeto normal e um projeto web onde vamos criar uma API de algum serviço.

Vamos iniciar criando um projeto normal. Não será API, LIB, nem nada disso, quero apenas demonstrar como criamos um projeto, explicar sua estrutura e tudo mais.

A criação de um projeto é bem simples se você instalou o Leiningen[comentei sobre no nosso primeiro artigo]. Caso não tenha instalado, faça um favor a você mesmo e faça a instalação, o link do projeto esta aqui:
 leiningen — :)

Bom, se você fez esse favor a você mesmo e tem tudo instalado bonitão do pai, é hora de criar o projeto Clojure.
Vamos lá:

➜ hello-clojure git:(master) ✗ lein new hello-clojure

Executando o comando acima, você ganha um diretório chamado hello-clojure pois foi esse o nome do projeto que passamos via parâmetro ao comando new do lein.

➜ criando-projeto-clojure git:(master) ✗ ls
hello-clojure

A estrutura de um projeto Clojure

Entrando no diretório, você terá uma estrutura com um monte de arquivos e sub-diretórios, não se assuste nem saia do artigo, vou explicar cada um deles com detalhes.
 Aqui esta a estrutura do projeto:

Vamos explicar cada arquivo e diretório começando de cima para baixo:

doc: no doc podemos colocar documentação do seu projeto. O arquivo intro.md vem default no projeto quando criamos via lein.

Apenas para ajudar a extensão md é de markdown é muito utilizado pelo GitHub por exemplo.

resources: o diretório resources serve para armezenar algum arquivo de configuração caso necessite.

src: dentro do src é onde vamos armazenar nossos códigos Clojure referentes ao nosso projeto.

test: o nome já fala por si só, contem todos os arquivos de testes do projeto.

CHANGELOG: geralmente utilizamos para colocar o que temos em cada mudança de versão do nosso projeto e isso independente deles serem em Python, Java, Clojure ou Ruby.

LICENCE: contem aqueles dados que costumamos clicar em ACEITO sem ler.

project.clj: eu sei que falei sobre o resources ser usado para os arquivos de configuração, mas temos o project.clj onde de fato temos as configurações do nosso projeto Clojure.

Apenas para não deixar vocês com um projeto aí sem poder executar nem ver o famoso HELLO WORLD funcionando, vou explicar como fazer isso. — :)

Abra o arquivo project.clj e adicione o código abaixo depois de :dependences. Não se esqueça que precisa ser dentro dos parênteses.

:main hello-clojure.core/foo

Feito isso podemos executar na linha de comando dentro do diretório do projeto e vejam o resultado:

➜ hello-clojure git:(master) ✗ lein run
Exception in thread “main” clojure.lang.ArityException: Wrong number of args (0) passed to: core/foo, compiling:(/private/var/folders/fq/p_729lfn1636wqx20fbxyxmw0000gn/T/form-init2572771382025020419.clj:1:125)

Isso acontece pois a função foo espera um parâmetro para funcionar corretamente, então vamos executar na linha de comando:

➜ hello-clojure git:(master) ✗ lein run Clojure
Clojure Hello, World!

E aqui temos nosso resultado sem erros :)


Para não deixar muito extenso esse artigo vou dividi-lo em partes.
Essa parte de criação do projeto, uma outra de utilizar namespaces e como importar esses namespaces em outros namespaces e assim por diante.

O código vai ficar disponível no GitHub e vamos atualizando-o a cada artigo.
 
 Por hoje é isso, valeu a todos que tem lido e pelo feedback bacana!!!

Abaixo os outros artigos e os que estão por vir.