के लिए प्रोग्रामेटिक रूप से एंटी लाइब्रेरी निर्भरताओं को जोड़ने के लिए मुझे हमारी चींटी बिल्ड स्क्रिप्ट के लिए स्वचालित सूचनाएं बनाने के साथ काम सौंपा गया है। ऐसा इसलिए है कि जब कोई तैनाती को निकाल देता है, तो हमारी टीम स्वचालित रूप से इसके बारे में एक ईमेल प्राप्त कर सकती है।मेल कार्य
स्वाभाविक पसंद Ant's mail task, जो चींटी के साथ पूर्वपरिभाषित आता उपयोग करने के लिए किया गया था:
java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
इसका कारण यह है है चींटी के मेल कार्य JavaMail पर निर्भर करता है:
<target name="notify" description="notify team">
<mail subject="latest deployment">
<from address="[email protected]" />
<to address="[email protected]" />
<message>A new build has been pushed out to prod</message>
</mail>
</target>
हालांकि इस निम्नलिखित क्रम अपवाद में परिणाम और JavaBeans Activation Framework, पुस्तकालय जो स्पष्ट रूप से इसके वितरण के साथ शामिल नहीं हैं। क्यों चींटी एक कार्य को परिभाषित करेगी जो लाइब्रेरी पर निर्भर है लेकिन इसमें शामिल नहीं है कि पुस्तकालय मेरे लिए अस्पष्ट है।
इस मुद्दे पर इस मुद्दे पर पहले से ही चर्चा की गई है: ant mail task using mail and activation jar in external location। उत्तरों के आधार पर दो समाधान प्रतीत होते हैं।
पहला यह है कि मैन्युअल रूप से एंटी क्लासपाथ पर इन लाइब्रेरी निर्भरताओं को मैन्युअल रूप से रखना है। यह -lib
कमांड लाइन तर्क का उपयोग करके किया जा सकता है, या ग्रहण में Window > Preferences > Ant > Runtime > Global Entries
का उपयोग कर सकते हैं, और फिर mail.jar
और activation.jar
जोड़ें (मुझे यकीन है कि यह -lib
जैसा ही है, मुझे सही करें अगर मैं गलत हूं)। लेकिन यह समाधान हमारी टीम के लिए अवांछनीय है क्योंकि इसका मतलब यह होगा कि हम में से प्रत्येक को मैन्युअल रूप से इन चरणों को पूरा करना होगा। मैं बस अपना अधिसूचना कोड प्रतिबद्ध करने का एक तरीका ढूंढ रहा हूं, और इसे svn अद्यतन के बाद किसी अन्य ग्रहण पर स्थापित करना चाहिए।
जुड़ा हुआ पोस्ट में अन्य समाधान प्रोग्राम के रूप में ऊपर करने के लिए एक तरह से उल्लेख है, जो अपने आप से चींटी को फोन करके:
<exec executable="ant">
<arg value="-lib"/>
<arg value="PATH_TO_MY_LIB"/>
<arg value="target"/>
</exec>
इस के साथ समस्या यह है कि चींटी कमांड लाइन टूल जाहिरा तौर पर केवल के साथ शामिल है है पूर्ण स्थापना, ग्रहण वितरण नहीं। तो फिर मेल कार्य का उपयोग करने के इच्छुक किसी भी व्यक्ति द्वारा मैन्युअल कार्रवाई के बिना इसे काम करने का कोई तरीका नहीं है।
क्या कोई तरीका है कि मैं इसे सेटअप सेटअप के लिए एक और परेशान कदम जोड़ने के बिना स्वचालित कर सकता हूं? मैं वास्तव में समझ में नहीं आता कि यह हासिल करना इतना कठिन क्यों है - ऐसा लगता है कि मेल कार्य एंट द्वारा पूर्वनिर्धारित नहीं था यह आसान होगा। उम्मीद है कि मैं कुछ याद कर रहा हूँ।
क्या आपने इस तरह के कार्यों के लिए सीआई का उपयोग करने पर विचार किया है? वे मेल और बहुत बेहतर रिपोर्टिंग के साथ आता है। मेरे वोट http://jenkins-ci.org/ – Jayan