?

Log in

Кложурное - Оживший юзерпик

Apr. 26th, 2015

05:35 pm - Кложурное

Previous Entry Share Next Entry

Как в программе показать -version, прочитав его из project.clj?

project.clj:

(def my-version "9.99")
(defproject my-project my-version
  :manifest {"Implementation-Version" ~my-version}
   etc)


core.clj:
(defn implementation-version []
  ;; Кажем версию софтины. Пропертя работает в lein repl, а getPackage().getImplementationVersion()
  ;; работает в JAR
  (or (System/getProperty "my.version")
         ;; Как сюда не хардкодить класс? Я думал, *ns*, но нет
      (-> (eval 'my.package.core) .getPackage .getImplementationVersion)))

(defn -main [& args]
  (println "I am the project, version" (implementation-version)))

Comments:

[User Picture]
From:zinal
Date:April 26th, 2015 02:41 pm (UTC)
(Link)
Вполне изьящно, за исключением "зашитого" имени класса.
А способ получить текущий класс отсутствует? В Жабном окружении это бывает весьма полезно - например, класслоадер текущего класса порой просто необходим.

Edited at 2015-04-26 02:42 pm (UTC)
(Reply) (Thread)