Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clojure program reading its own MANIFEST.MF

How can a Clojure program find its own MANIFEST.MF (assuming it is packaged in a JAR file).

I am trying to do this from my "-main" function, but I can't find a class to use in the following code:

  (.getValue
    (..
      (java.util.jar.Manifest.
        (.openStream
          (java.net.URL.
            (str
              "jar:"
              (..
                (class **WHAT-GOES-HERE**)
                getProtectionDomain
                getCodeSource
                getLocation)
              "!/META-INF/MANIFEST.MF"))))
      getMainAttributes)
    "Build-number"))

Thanks.

like image 792
Ralph Avatar asked May 01 '10 18:05

Ralph


1 Answers

This seems to work reliably:

(defn set-version
  "Set the version variable to the build number."
  []
  (def version
    (.getValue (.. (Manifest.
      (.openStream
        (URL.
          (str "jar:"
            (.getLocation
              (.getCodeSource
                (.getProtectionDomain org.example.myproject.thisfile)))
            "!/META-INF/MANIFEST.MF"))))
      getMainAttributes)
      "Build-number")))
like image 150
Ralph Avatar answered Sep 30 '22 06:09

Ralph