2015-09-01 2 views
8

एक lein कार्य (वास्तव में परीक्षण, जो साथ डिफ़ॉल्ट रूप से चलाता है: परीक्षण प्रोफ़ाइल) शुरू। मुझे क्या करना चाहते हैं, उसकेक्या लीनेज में सिस्टम गुण सेट करने का कोई तरीका है?

जावा -Dproperty1 = मूल्य -Dproperty2 2 = मान कार्य बराबर के साथ शुरू है

है कि सुझाव है कि यह ठीक तरह से काम करना चाहिए वेब पर कुछ संदर्भ हैं इस:

project.clj:

... 
:profiles {:test {:jvm-opts ["-Dproperty1=value" "-Dproperty2-value"]}} 

यह मेरा परीक्षण धावक में नजरअंदाज कर दिया है। प्रोफ़ाइल सही है, अगर मैं कुछ वास्तविक जेवीएम तर्क डालता हूं (जैसे कुछ "-XX: + प्रिंटजीसी") यह ठीक काम करता है। लेकिन सिस्टम गुणों को लेने के लिए प्रतीत नहीं होता है। क्या ऐसा करने का कोई सही तरीका है?

उत्तर

1

हम उस उद्देश्य के लिए environ का उपयोग करते हैं।

एक बार जब आप प्लगइन स्थापित, तुम सब करने की जरूरत है इस तरह के रूप अपनी परियोजना वातावरण चर का एक नक्शा युक्त जड़ में एक फ़ाइल .lein-env बनाने स्थापित किया जाना है,:

{ 
    :s3-access-key  "some key" 
    :s3-secret-key  "some secret" 
} 

फिर, अपने कोड में, आप उपयोग कर सकते हैं:

(require '[environ.core :refer [env]]) 
(env :s3-access-key) ;; "some key" 

इस बिंदु की सुविधा देता है मेरे लिए, कहते हैं, परीक्षा में ठूंठ सर्वर लेकिन पर्यावरण के रूप में उत्पादन में असली बात प्रणाली वातावरण चर अगर कोई .lein-env प्रदान की जाती है का उपयोग करेगा।

मुझे उम्मीद है कि इससे मदद मिलती है।

+0

धन्यवाद, मैंने इसे देखा है, मुझे जितनी चीज चाहिए - मैं कुछ परीक्षणों को चला रहा हूं, जिसमें एक चीज कंटेनर है जो रनटाइम पर्यावरण से तत्काल होने पर पढ़ता है, इसलिए इसे स्रोत में shoehorning संभव है लेकिन बेकार है। लीन में बस कॉन्फ़िगर करने में सक्षम होने के लिए यह बहुत अच्छा होगा, लेकिन टिप के लिए +1। धन्यवाद। –

+0

यह तकनीकी रूप से जावा गुण सेट नहीं करता है। यह केवल आपको पर्यावरण से कॉन्फ़िगरेशन पढ़ने देता है, जो आपको आवश्यक नहीं हो सकता है (उदाहरण के लिए यदि आप ऐसी लाइब्रेरी का उपयोग करते हैं जो जावा गुणों का उपभोग करता है)। –

2

मिले एक जवाब किसी और को जो इस के साथ संघर्ष कर रहा है के लिए,:

जब से मैं पर्यावरण गुण इंजेक्षन करने के लिए आवश्यक इससे पहले कि मैं इस प्रक्रिया को शुरू कर दिया, मैं निम्नलिखित किया:

को shell प्लग-इन जोड़ते अपने project.clj:

: प्लगइन्स [[lein-खोल "0.4.1"]]

और फिर अपने प्रोफ़ाइल के लिए एक तैयारी कार्य जोड़ने। - लेकिन वहाँ एक शिकन है क्या आप ऐसा कर सकता है लगता है कि:

:profiles {:test {:prep-tasks [["shell" "export" "foo=bar"]]}} 

लेकिन यह काम नहीं करता है, के रूप में खोल निर्यात आदेश नहीं देखता - आप, "ऐसी कोई फ़ाइल" मिल के बाद से वह हिस्सा है बैश और "निर्यात" नामक कोई निष्पादन योग्य फ़ाइल नहीं है। तो मैं एक स्क्रिप्ट "setenv.sh" कहा जाता है बनाया है और भाग गया है कि शेल से:

:profiles {:test {:prep-tasks [["shell" "./test/setenv.sh"]]}} 

संपादित करें: वास्तव में यह काम नहीं करता, चर उपप्रक्रिया को शामिल नहीं किया जाता। इसे यहां छोड़ दिया क्योंकि यह किसी के लिए उपयोगी हो सकता है।

संपादित करें: वास्तव में एक शेल स्क्रिप्ट बनाना था जो निर्यात को कॉल करता है और फिर लीन चलाता है। निश्चित रूप से सबसे सुरुचिपूर्ण समाधान नहीं है।

संबंधित मुद्दे