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:
| 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
Publicar un comentario