2014-09-16 17 views
7

में प्रदान की गई अतिरिक्त मेवेन रिपोजिटरी का उपयोग नहीं कर रहा है मेरे पास जावा-आधारित गिटहब प्रोजेक्ट है, fitnessjiffy-spring (मैं वर्तमान में "बूटस्ट्रैप" शाखा पर केंद्रित हूं)। यह किसी अन्य गिटहिब प्रोजेक्ट, fitnessjiff-etl से निर्मित लाइब्रेरी पर निर्भर करता है। मैं ट्रेविस सीआई द्वारा निर्मित इन दोनों को कॉन्फ़िगर करने की कोशिश कर रहा हूं।ट्रैविस सीआई pom.xml

दुर्भाग्यवश, ट्रैविस मेवेन आधारित जावा परियोजनाओं से निपटने में जेनकिंस या हडसन के रूप में परिष्कृत नहीं है। जेनकींस परियोजनाओं के बीच निर्भरता को आसानी से संभाल सकता है, लेकिन ट्रैविस के साथ एक ही अवधारणा मौजूद नहीं है। यदि एक परियोजना दूसरे पर निर्भर करती है, तो वह अन्य परियोजना पहले से ही पहले ही बनाई जानी चाहिए ... और इसका आर्टिफैक्ट कुछ मैवेन रेपो पर अपलोड किया गया है जहां पहली परियोजना इसे बाद में डाउनलोड कर सकती है।

मेरी "फिटनेसजफी-एटीएल" लाइब्रेरी बस ठीक है और तैनात कर रही है। मैं Maven भंडार होस्टिंग के लिए Bintray उपयोग कर रहा हूँ, और आप स्पष्ट रूप से सादे HTTP पर मेरी कलाकृतियों देख सकते हैं:

http://dl.bintray.com/steve-perkins/maven/

मेरी "fitnessjiffy वसंत" परियोजना में, मैं सीधे इस Maven रेपो स्थान द्वारा जोड़ा जा रहा pom.xml, ताकि ट्रैविस उस आर्टिफैक्ट निर्भरता को पा सकें। Here is the state of my POM at the time of this writing। फ़ाइल के नीचे <repositories> तत्व नोट करें।

जब मैं स्थानीय रूप से इस परियोजना का निर्माण करता हूं, तो यह ठीक काम करता है। मैं इसे "http://dl.bintray.com/ ..." से मेवेन आर्टिफैक्ट डाउनलोड कर देख सकता हूं। हालांकि, जब मैं ट्रैविस सीआई पर निर्माण करने की कोशिश करता हूं तो यह हर बार विफल रहता है। मैं कंसोल लॉग में देख सकता हूं कि ट्रेविस अभी भी मेरे निर्दिष्ट रेपो के बजाय मेवेन सेंट्रल से आर्टिफैक्ट डाउनलोड करने का प्रयास कर रहा है।

क्या यह किसी और के लिए समझ में आता है? मैवेन स्थानीय रूप से निर्माण करते समय पीओएम फ़ाइल में कस्टम रिपोजिटरी स्थान का उपयोग क्यों करता है, लेकिन ट्रेविस सीआई बिल्ड पर चलते समय इस कॉन्फ़िगरेशन को अनदेखा करता है?

उत्तर

4

इस में खोदने से, मैंने पाया कि ट्रैविस मैवेन सेंट्रल के लिए अपनी प्रॉक्सी का उपयोग करता है, और मैवेन को अपने प्रॉक्सी के माध्यम से सभी निर्भरता अनुरोधों को मजबूर करने के लिए कॉन्फ़िगर किया है। दूसरे शब्दों में, इस समय ट्रैविस पर बने एक परियोजना की पीओएम फ़ाइल में निर्दिष्ट अतिरिक्त मेवेन रिपो का उपयोग करने के लिए यह संभव नहीं लगता है।

मेरे मामले में, मैंने इस तरह के रिफैक्टरिंग को समाप्त कर दिया कि परियोजना को बाहरी जेएआर निर्भरता की आवश्यकता नहीं होगी। मैंने Drone.io पर भी स्विच किया, इसलिए मैं अपने भंडार में एक वाईएएमएल फ़ाइल ले जाने के बजाय बिल्ड सर्वर पर अपनी सेटिंग्स का प्रबंधन कर सकता था (जो हमेशा मुझे थोड़ा सा दाफ्ट के रूप में मारा)।

हालांकि, ड्रोन पर भी यह कई परियोजनाओं (जावा विकास के साथ बेहद आम) के बीच निर्भरताओं का प्रबंधन करने में एक बड़ी परेशानी है। जावा के लिए, मुझे नहीं लगता कि वर्तमान में जेनकींस या हडसन के लिए पर्याप्त विकल्प है, शायद एक सस्ते डिजिटल महासागर बूंद या कुछ अन्य वीपीएस प्रदाता उदाहरण पर चल रहा है।

1

अपने इंस्टॉल चरण में $HOME/.m2/settings.xml अपने कस्टम भंडार को परिभाषित करें।

 
cache: 
    directories: 
    - "$HOME/.m2" 
install: 
- curl -o $HOME/.m2/settings.xml 
    https://raw.githubusercontent.com/trajano/trajano/master/src/site/resources/settings.xml 
- mvn dependency:go-offline 
script: 
- mvn clean install site 
संबंधित मुद्दे