Quiero poder consultar o insertar la cadena de versión establecida por el proyecto de leiningen y mostrar ese valor al usuario. Los usos incluyen mostrar la cadena de versión de la CLI, o como un encabezado en una aplicación de anillo. es posible?Incrustar cadena de versión del proyecto Leiningen en la aplicación
Respuesta
Si está ejecutando dentro de Leiningen usando lein run
o la como, está disponible como una propiedad del sistema: (System/getProperty "myproject.version")
. Si está produciendo un frasco, debe leer pom.properties
.
si construye un archivo jar puede extract the current version from the jar file.
de lo contrario, si no está haciendo AOT, entonces puede read
el archivo project.clj (porque es un mapa) y luego extraer la versión.
I certeza espero que haya una solución más elegante corto de escribir un plugin para este Leiningen (a menos que alguien quiere escribir esto, pista pista ..)
Me gusta la respuesta de technomancy, pero tuve que buscar cómo "leer pom.properties
". Resulta que para el artefacto com.example/mi-proyecto Maven, hay un archivo en la ruta de clases bajo
META-INF/maven/com.example/my-project/pom.properties
que se puede leer en un java.util.Properties y obtener una llave "versión" .
(ns com.example.version
(:require [clojure.java.io :as io])
(:import (java.util Properties)))
(defn read-project-version [groupid artifact]
(-> (doto (Properties.)
(.load (-> "META-INF/maven/%s/%s/pom.properties"
(format groupid artifact)
(io/resource)
(io/reader))))
(.get "version")))
Alguien ha escrito una buena biblioteca para manejar esto: https://github.com/trptcolin/versioneer
funciona para proyectos Lein, ambos corriendo en Lein y desde un uberjar. Se usa como la siguiente (tomado de la página de Github):
Agregue esto a su project.clj:
[trptcolin/versioneer "0.2.0"]
Luego, en el código, hacer algo como esto, donde GRUPO-ID y ARTIFACT-ID son los identificadores habituales de Leiningen/Maven para su proyecto .
user=> (require '[trptcolin.versioneer.core :as version]) nil user=> (version/get-version "GROUP-ID" "ARTIFACT-ID") "1.2.3-SNAPSHOT"
Esto sigue funcionando, y es el más fácil elección por ahora. – jwhitlark
Aquí es cómo leo mi nombre del proyecto y la versión, tenga en cuenta que el archivo project.clj
se lee durante archivo de compilación y tarro simplemente contiene la cadena:
(defmacro proj-version []
(some->> (slurp "project.clj") clojure.edn/read-string (drop 1) (take 2) (str/join " ")))
(defn -main []
(println (proj-version))
así que para (defproject abc "1.2.3" ...
, cuando ejecutar -main
se imprimirá:
abc 1.2.3
- 1. ¿Cómo incrustar la versión de proyecto de arquetipo en el arquetipo de Maven?
- 2. Trabajar con Java desde Emacs dentro del proyecto Leiningen
- 3. a nivel de proyecto Leiningen Plugin
- 4. iOS versión de la aplicación
- 5. Dónde encontrar números de versión válidos para dependencias en Leiningen
- 6. ¿Cómo cambiar programáticamente la versión del producto de un proyecto?
- 7. ¿Incrustar V8 en la aplicación OpenCL?
- 8. Cómo incrustar iPhone-Wax en la aplicación
- 9. Incrustar la aplicación XULRunner en Java
- 10. Dependencia del proyecto Maven contra JDK versión
- 11. ¿Cómo mostrar la versión actual del proyecto de mi aplicación al usuario?
- 12. Leiningen: ¿cómo matar el proceso del niño?
- 13. Incrustar una versión más nueva de WebKit con la aplicación de Android
- 14. Cómo incrustar un ejecutable en mi proyecto
- 15. ¿Cómo ejecutar código con Leiningen?
- 16. Incrementando la versión del Proyecto Maven con Jenkins/Git
- 17. Heroku, ¿Cómo saber la versión ruby del proyecto?
- 18. ¿Cómo agrego pruebas unitarias a un proyecto de Leiningen?
- 19. Explicación/documentación del macroproyecto de leiningen
- 20. Incrustar video de youtube.com en la aplicación iphone
- 21. Automatización de la administración de dependencia local de Leiningen
- 22. Incrustar Python en una aplicación de iPhone
- 23. "Incrustar" JasperServer en una aplicación web externa?
- 24. Incrustar una aplicación en una ventana
- 25. Incrustar ventana del navegador web en Java
- 26. Especifique la versión de publicación con la línea de comandos de MSBuild como versión de ensamblaje del proyecto
- 27. Cómo obtener la versión del proyecto del pom de Mavens en Ant
- 28. Acceso a la versión del proyecto maven en los archivos de configuración de Spring
- 29. ¿Cómo sincronizar la versión de publicación a la versión de ensamblaje en una aplicación .NET ClickOnce?
- 30. ERROR: Aplicación requiere la versión API 14. versión API del dispositivo es 13 (Android 3.2.1)
Desafortunadamente parece que no funciona, lo siguiente devuelve nil, w la llamaron usando java en un uberjar de una clase AOT: '(println" blargl "(.getSpecificationVersion (.getPackage (class * ns *)))" \ n "))' – MrEvil