MrE*_*vil 11 clojure leiningen
我希望能够查询或嵌入由leiningen项目设置的版本字符串,并将该值显示给用户.用途包括从CLI显示版本字符串,或作为环形应用程序中的标题显示.这可能吗?
小智 8
如果您在Leiningen内部使用lein run等运行,它可以作为系统属性使用:(System/getProperty "myproject.version").如果你正在制作一个罐子,你需要阅读pom.properties.
我喜欢technomancy的回答,但我不得不去查找如何“阅读pom.properties”。原来对于maven神器com.example/my-project,classpath下有一个文件
META-INF/maven/com.example/my-project/pom.properties
Run Code Online (Sandbox Code Playgroud)
您可以将其读入 java.util.Properties 并获取“版本”键。
(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")))
Run Code Online (Sandbox Code Playgroud)