मैं लीनिंगेन प्रोजेक्ट द्वारा सेट की गई संस्करण स्ट्रिंग को क्वेरी या एम्बेड करने में सक्षम होना चाहता हूं और उस मान को उपयोगकर्ता को प्रदर्शित करता हूं। उपयोग में सीएलआई से संस्करण स्ट्रिंग प्रदर्शित करना, या एक अंगूठी अनुप्रयोग में शीर्षलेख के रूप में शामिल करना शामिल है। क्या यह संभव है?एप्लिकेशन में लीनिंगेन प्रोजेक्ट से एम्बेड संस्करण स्ट्रिंग
उत्तर
(जब तक किसी और यह लिखने के लिए, संकेत संकेत .. चाहता है) आप lein run
या का उपयोग कर Leiningen अंदर चला रहे हैं का एक और अधिक सुरुचिपूर्ण समाधान कम होती है जैसे, यह सिस्टम प्रॉपर्टी के रूप में उपलब्ध है: (System/getProperty "myproject.version")
। यदि आप एक जार का उत्पादन कर रहे हैं तो आपको pom.properties
पढ़ने की आवश्यकता है।
यदि आप एक जार फ़ाइल बनाते हैं तो आप extract the current version from the jar file कर सकते हैं।
अन्यथा यदि आप एओटी नहीं कर रहे हैं तो आप Project.clj फ़ाइल read
कर सकते हैं (क्योंकि यह एक मानचित्र है) और फिर संस्करण निकालें।
मैं यक़ीन उम्मीद है कि इस के लिए एक leiningen प्लगइन लेखन
मुझे टेक्नोमेंसी का जवाब पसंद है, लेकिन मुझे यह देखना होगा कि "pom.properties
पढ़ें"। यह पता चला Maven विरूपण साक्ष्य com.example/मेरी-परियोजना के लिए, वहाँ जो आपको एक java.util.Properties में पढ़ सकते हैं और एक "संस्करण" कुंजी बाहर निकल सकते हैं
META-INF/maven/com.example/my-project/pom.properties
तहत classpath पर एक फ़ाइल है कि ।
(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")))
का कोई व्यक्ति इस से निपटने के लिए एक अच्छा पुस्तकालय लिखा है: https://github.com/trptcolin/versioneer
यह lein परियोजनाओं के लिए काम करता है, दोनों lein में और एक uberjar से चल रहा है। (Github पेज से लिया गया) निम्नलिखित की तरह यह प्रयोग करें:
यह आपके project.clj में जोड़ें: अपने कोड में, फिर
[trptcolin/versioneer "0.2.0"]
, कुछ इस तरह है, जहां ग्रुप-आईडी करना और आर्टिफैक्ट-आईडी आपके प्रोजेक्ट के लिए सामान्य लीनिंगेन/मेवेन पहचानकर्ता हैं।
user=> (require '[trptcolin.versioneer.core :as version]) nil user=> (version/get-version "GROUP-ID" "ARTIFACT-ID") "1.2.3-SNAPSHOT"
यह अभी भी काम करता है, और सबसे आसान है दूर तक पसंद है। – jwhitlark
यहाँ है कैसे मैं अपने प्रोजेक्ट नाम और संस्करण पढ़ा है, ध्यान दें कि project.clj
फ़ाइल संकलन और जार फ़ाइल के दौरान पढ़ने के लिए है बस स्ट्रिंग है:, जब आप
(defmacro proj-version []
(some->> (slurp "project.clj") clojure.edn/read-string (drop 1) (take 2) (str/join " ")))
(defn -main []
(println (proj-version))
तो
(defproject abc "1.2.3" ...
के लिए
रन -main
यह प्रिंट करेगा:
abc 1.2.3
- 1. मेवेन आर्केटाइप में आर्चेटाइप प्रोजेक्ट संस्करण को कैसे एम्बेड करें?
- 2. लीनिंगेन
- 3. लीनिंगेन
- 4. लीनिंगेन: प्रोजेक्ट.clj
- 5. मैं लीनिंगेन प्रोजेक्ट में यूनिट परीक्षण कैसे जोड़ूं?
- 6. लीनिंगेन आरईपीएल
- 7. सी ++/सीएलआई प्रोजेक्ट में संसाधन एम्बेड करना
- 8. ऑटोमेटिंग लीनिंगेन स्थानीय निर्भरता प्रबंधन
- 9. लीनिंगेन, चेतावनी-पर-प्रतिबिंब। वर्तमान प्रोजेक्ट के लिए केवल
- 10. जावा में एम्बेड करने योग्य वितरित संस्करण नियंत्रण प्रणाली?
- 11. लीनिंगेन और आइवी रेपो
- 12. किसी मौजूदा प्रोजेक्ट में संस्करण नियंत्रण जोड़ना
- 13. वेब एप्लिकेशन प्रोजेक्ट
- 14. क्या सी # प्रोजेक्ट में सी कोड एम्बेड करना संभव है?
- 15. AS3 फ़्लैश/फ्लेक्स प्रोजेक्ट में WAV फ़ाइलों को एम्बेड करना?
- 16. जावा प्रोजेक्ट से सभी स्ट्रिंग निकालें
- 17. जावा पर XULRunner एप्लिकेशन एम्बेड करना
- 18. एंड्रॉइड एप्लिकेशन में जावा प्रोजेक्ट आयात करें?
- 19. एंड्रॉइड प्रोजेक्ट लाइब्रेरी में क्लास विस्तारित एप्लिकेशन?
- 20. क्लोजर लीनिंगेन ऑफ़लाइन इंस्टॉल करें
- 21. जावा को एक C++ एप्लिकेशन में एम्बेड करें?
- 22. टास्कबार में एम्बेड करें
- 23. डीजेगो और प्रोजेक्ट/एप्लिकेशन संगठन
- 24. मैं जावा एप्लिकेशन में स्कैला 2.8 दुभाषिया कैसे एम्बेड करूं?
- 25. क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन में वेब ब्राउज़र नियंत्रण कैसे एम्बेड करें?
- 26. फ़्लैश प्लेयर को सी ++ या जावा एप्लिकेशन में एम्बेड करना?
- 27. स्प्रिंग कॉन्फ़िगरेशन फ़ाइलों में एक्सेस मेवेन प्रोजेक्ट संस्करण
- 28. प्रकाशित संस्करण को .NET ClickOnce एप्लिकेशन में असेंबली संस्करण में सिंक्रनाइज़ कैसे करें?
- 29. एंड्रॉइड एप्लिकेशन में i-jetty सर्वर को कैसे एम्बेड करें?
- 30. किसी एप्लिकेशन में रिमोट पायथन शेल एम्बेड करना
दुर्भाग्यवश यह काम नहीं करता प्रतीत होता है, निम्नलिखित रिटर्न शून्य, डब्ल्यू मुर्गी ने एओटी कक्षा से uberjar पर जावा का उपयोग करने के लिए कहा: '(println" blargl "(.getSpecificationVersion (.getPackage (class * ns *)))" \ n "))' – MrEvil