मैं सभी निर्भरताओं (संकलन, परीक्षण, प्लगइन्स इत्यादि) डाउनलोड करने के लिए मेवेन प्राप्त करने की कोशिश कर रहा हूं ताकि मैं अपने डॉकराइज्ड को बर्बाद कर सकूं, जिससे उन्हें बार-बार डाउनलोड करना अनावश्यक समय बर्बाद हो जाता है।प्लगइन निर्भरताओं सहित सभी मेवेन निर्भरताओं को प्राप्त करें
हमने अपने मेवेन बिल्ड को डॉकराइज्ड किया है ताकि हम जेनकिंस मशीन (जावा, रेडिस, मैवेन निर्भरता इत्यादि) पर बहुत अधिक विशिष्ट विशिष्ट निर्भरता स्थापित किए बिना इसे अपने जेनकींस से चला सकें। हमारा निर्माण वृद्धिशील डॉकर बनाता है जो केवल उन चरणों को निष्पादित करता है जिन्हें वास्तव में पुनः चलाने की आवश्यकता होती है।
हमारा मुख्य निर्माण एक DockerFile JDK, Maven स्थापित करने के लिए कई कदम उठाए, आदि है कि तो यह एक
COPY ./pom.xml /opt/inbot-api/pom.xml RUN mvn dependency:copy-dependencies clean
यह स्थानीय Maven भंडार के लिए उनकी निर्भरता डाउनलोड करें और फिर होगा की सफाई करता है लक्ष्य निर्देशिका।
फिर हम स्रोत पेड़ को छवि में कॉपी करते हैं और पूर्ण निर्माण चलाते हैं।
COPY ./src /opt/inbot-api/src RUN mvn -e clean install
सामान्य विचार है कि एक साफ मशीन पर, डोकर सभी रन चरणों को निष्पादित करेगा, लेकिन वृद्धिशील पर बनाता है यह केवल फिर से दौड़ना चीजों की आवश्यकता है कि फिर से चल रहा है। प्रत्येक रन चरण के बाद, यह एक मध्यस्थ छवि स्टोर करता है। इसलिए, यदि पोम फ़ाइल नहीं बदली है, तो निर्भरता लाने के चरण को फिर से शुरू करने की कोई आवश्यकता नहीं है क्योंकि यह सटीक परिणाम उत्पन्न करेगा। इसलिए, इसके बजाय यह कैश की गई मध्यस्थ छवि को पहले से डाउनलोड की गई सभी निर्भरताओं के साथ लोड करता है। यह वही है जो हम चाहते हैं।
हमारे डॉकरफ़ाइल के लिए बहुत कुछ है जो यहां इतना प्रासंगिक नहीं है लेकिन आखिरकार यह हमारे संकलित कलाकृतियों, एक nginx कॉन्फ़िगरेशन और हमारी सभी रनटाइम निर्भरताओं के साथ एक डॉकर फ़ाइल बनाता है जिसे हम ईसीएस पर तैनात कर सकते हैं।
mvn clean install
को छोड़कर यह लगभग काम करता है, फिर भी हर बिल्ड पर अतिरिक्त प्लगइन निर्भरता डाउनलोड करता है। इसलिए, ये निर्भरताएं हैं कि प्रति-निर्भरता चरण शामिल नहीं है।
मेरा प्रश्न, मैं प्लगइन निर्भरताओं समेत सभी निर्भरताओं को डाउनलोड करने के लिए RUN mvn dependency:copy-dependencies clean
कैसे प्राप्त करूं। मैंने लोगों को वास्तव में mvn dependency:copy-dependencies clean
के बजाय mvn verify clean
पर देखा है, लेकिन यह हमारे मामले में धीमा है। मैं सोच रहा था कि ऐसा करने का एक बेहतर तरीका है या नहीं।
मैं इसे सुधारने के तरीके पर किसी भी प्रतिक्रिया की सराहना करता हूं।
अद्यतन
अब मैं एक
RUN mvn -B -T 4 dependency:copy-dependencies dependency:resolve-plugins dependency:go-offline clean
करते हैं और यह अभी भी mvn clean install
उसके बाद के साथ और अधिक सामान डाउनलोड करता है। dependency:go-offline
के बावजूद mvn -o clean install
अभी भी विफल रहता है। तो, ऐसा लगता है कि यह प्लगइन टूट गया है।
मैं 'mvn निर्भरता उपयोग करने के लिए सुझाव है कि प्लगइन के लिए: हल-plugins' https देखें: //maven.apache। org/plugins/Maven-निर्भरता-प्लगइन/हल-प्लगइन्स-मोजो।एचटीएमएल – khmarbaise
धन्यवाद, जो समस्या हल करता है। –