Creando proyectos con Leiningen

En 2009 Phil Hagelberg lanza Leiningen como respuesta a la complejidad de usar Maven directamente en proyectos Clojure.

Leiningen es una herramienta para la automatización de proyectos en Clojure. Similar a Maven o Gradle.

Como lo dice su página oficial:

"Leiningen es la forma más sencilla de usar Clojure. Centrado en la automatización de proyectos y la configuración declarativa, te permite concentrarte en tu código sin complicaciones".

Su propósito general es: automatizar tareas repetitivas y facilitar la configuración de proyectos mediante un archivo declarativo(project.clj).

Características principales:

  • Gestión de dependencias: Descarga y administra librerías desde repositorios como Maven Central. 
  • Automatización de tareas: Compilar, ejecutar pruebas, empaquetar aplicaciones, generar documentación. 
  • Plugins: Extiende funcionalidades (por ejemplo, integración con ClojureScript, despliegue en servidores, etc.). 
  • Ejecución interactiva: Permite lanzar un REPL (Read-Eval-Print Loop) con todas las dependencias del proyecto cargadas. 
  • Declaratividad: Todo se configura en un archivo project.clj, lo que simplifica la portabilidad y colaboración.

Esta herramienta, como mencionamos arriba, es similar a Maven o Gradle. Aunque existen alternativas modernas como Boot y deps.edn (Clojure CLI), que ofrecen enfoques distintos para la gestión de dependencias y ejecución sigue siendo la herramienta más usada para crear proyectos en Clojure.

Veamos la siguente comparativa:

Comparativa Leiningen, Boot y Clojure CLI (deps.edn)

Herramienta Lenguaje base Filosofía Uso actual
Leiningen Clojure Declarativo, simple, basado en project.clj Muy extendido en proyectos tradicionales
Boot Clojure Pipelines de tareas programables Flexible, pero menos popular
Clojure CLI (deps.edn) Clojure Configuración mínima, integración directa con REPL Creciente adopción, recomendado por Rich Hickey

Se puede instalar en entornos Linux, Mac OS y Windows: https://codeberg.org/leiningen/leiningen/wiki/Packaging

En Windows con Chocolatey:

$ choco install lein

En Linux con SDKMAN!:

$ sdk install leiningen

Verificamos instalación:

$ lein version

También podemos obtener ayuda de la herramienta:

$ lein help

Creando proyecto Clojure con Leiningen

1. Crearemos un sencillo proyecto.

$ lein new app holamundo
$ cd holamundo

El árbol de directorios lucirá como esto:

holamundo
├───doc
├───resources
├───src
   └───holamundo
└───test
    └───holamundo

2. Echemos un vistazo a los archivos project.clj y core.clj, este último lo modificaremos:

project.clj

(defproject holamundo "0.1.0-SNAPSHOT"
  :description "Se trata de un simple proyecto de Hola, mundo con Clojure y Leininingen"
  :url "http://localhost"
  :license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
            :url "https://www.eclipse.org/legal/epl-2.0/"}
  :dependencies [[org.clojure/clojure "1.12.2"]]
  :main ^:skip-aot holamundo.core
  :target-path "target/%s"
  :profiles {:uberjar {:aot :all
                       :jvm-opts ["-Dclojure.compiler.direct-linking=true"]}})

Básicamente en este archivo indicamos una breve descripción del proyecto, indicamos la licencia y la URL de nuestra organización, además de indicar las dependencias de nuestro proyecto. Ahora veamos el archivo "main" del proyecto.

core.clj

(ns holamundo.core
  (:gen-class))

(defn -main
  "Nuestro primer proyecto con Leiningen."
  [& args]
  (println "Hola, mundo con Leiningen."))

3. Ejecutamos el proyecto:

$ lein run

Salida:

Retrieving org/clojure/clojure/1.12.2/clojure-1.12.2.pom from central
Retrieving org/clojure/clojure/1.12.2/clojure-1.12.2.jar from central
Hola, mundo con Leiningen.

¡Hemos creado nuestro primer proyecto con Leiningen!

Continuaremos en próximas entregas.

Enlaces:

https://leiningen.org/


Comentarios

Entradas populares