से टाइको सुविधाओं को हल करके एक पी 2 रिपोजिटरी बनाना, मैं स्थानीय मैवेन रिपोजिटरी में कलाकृतियों को स्थापित किए बिना रिमोट मेवेन रिपोजिटरी में तैनात किए गए टाइको फीचर कलाकृतियों से पी 2 रिपोजिटरी बनाने की कोशिश कर रहा हूं (Tycho fails to resolve reference from product to eclipse-feature from a different reactor build में), और एक ही रिएक्टर निर्माण में सभी सुविधाओं और भंडार को एक साथ बनाने के बिना।मैवेन रिपॉजिटरी
पृष्ठभूमि
मैं एक बहु-मॉड्यूल टाइको परियोजना है कि कई ग्रहण प्लग इन और सुविधाओं बनाता है।
ताकि मैं प्रत्येक मॉड्यूल को अलग-अलग बना सकूं - और ताकि मैं अपने नेक्सस मेवेन रिपोजिटरी में ओएसजीआई कलाकृतियों का संदर्भ दे सकूं - मैंने अपने लक्षित प्लेटफॉर्म में <pomDependencies>consider</pomDependencies>
को सक्षम किया है, और मॉड्यूल के बीच मेवेन निर्भरता या सामान्य रूप से रिपोजिटरी कलाकृतियों को जोड़ा है <dependency/>
तत्वों के साथ।
यह अच्छी तरह से काम करता है - मैं सुविधाओं का निर्माण या उनके आश्रित से प्लग इन मेरे स्थानीय Maven भंडार में या एक ही रिएक्टर निर्माण में किया जा रहा बिना प्लगइन परीक्षण चला सकते हैं। उदाहरण के लिए, जब मैं एक प्लगइन परीक्षण परियोजना पर mvn test
चलाने के लिए, प्रासंगिक निर्भरता नेक्सस से डाउनलोड किया जाएगा और टाइको खुशी से, इन के खिलाफ मेरी प्रकट में Import-Package
रों हल सब कुछ का निर्माण और परीक्षण चलेंगे। अब तक सब ठीक है।
मैं इन सुविधाओं से एक पी 2 भंडार उत्पन्न करना चाहता हूं ताकि मैं उन्हें एक अद्यतन साइट से एक्लिप्स में स्थापित कर सकूं, और ऐसा करने के लिए विज्ञापित तरीका eclipse-repository
पैकेजिंग प्रकार के साथ है। लेकिन यहां योजना कम हो गई है - टाइको फीचर निर्भरताओं को हल करने में सक्षम नहीं प्रतीत होता है, वैसे ही रिपॉजिटरीज़ का निर्माण उसी तरह होता है जब यह सुविधाओं के निर्माण के दौरान प्लगइन निर्भरताओं को हल कर सकता है। सभी प्रयास उपज:
- ही रिएक्टर के हिस्से के रूप निर्माण:
[ERROR] Cannot resolve project dependencies: [ERROR] Software being installed: my.eclipse.repository raw:0.0.1.'SNAPSHOT'/format(n[.n=0;[.n=0;[-S]]]):0.0.1-SNAPSHOT [ERROR] Missing requirement: my.eclipse.repository raw:0.0.1.'SNAPSHOT'/format(n[.n=0;[.n=0;[-S]]]):0.0.1-SNAPSHOT requires 'my.prj.eclipse.project.feature.feature.group 0.0.0' but it could not be found
दो तरीके मैं सफलतापूर्वक p2 भंडार का निर्माण किया है कर रहे हैं। यदि मैं टाइपो मल्टी-मॉड्यूल प्रोजेक्ट के भीतर
eclipse-repository
मॉड्यूल बना देता हूं, और पूरे प्रोजेक्ट को एक साथ बना देता हूं उदा।mvn verify
, सुविधाओं को ठीक हल किया गया है। लेकिन मैं यह नहीं करना चाहता। मैं अलग-अलग मॉड्यूल बनाना पसंद करूंगा। इसका मतलब है कि हमारे सीआई में प्रत्येक मॉड्यूल के लिए एक संकेतक हो सकता है, और हम तुरंत देख सकते हैं कि कौन से मॉड्यूल परीक्षण विफल रहे हैं; यह हमें समानांतर निर्माण के अवसर प्रदान करता है; और हम उन मॉड्यूल पर लगातार चलने से बचते हैं जो नहीं बदले हैं। एक मोनोलिथिक मेवेन बिल्ड का उपयोग करना एक शर्म की बात होगी। - यदि मैं निर्भरता पर
mvn install
चलाकर, अपने स्थानीय मेवेन भंडार में टाइपो प्रोजेक्ट स्थापित करता हूं। लेकिन मैं नहीं चाहता कि यह या तो करना है, क्योंकि इसका मतलब यह होगा निर्माण स्वाभाविक irreproducable है, क्योंकि यह स्थानीय भंडार की स्थिति के प्रति संवेदनशील होना होगा चाहते हैं। हमारी सीआई वर्तमान में प्रति नौकरी मेवेन रिपोजिटरी बनाए रखने के लिए स्थापित है और निष्पादन की शुरुआत में इसे पूरी तरह से मिटा दें, ताकि हमें इस संभावित गड़बड़ी से बचाया जा सके।
तो मेरे सवाल है: वहाँ एक तीसरा रास्ता है? वहाँ किसी भी तरह से मैं टाइको प्लगइन एक दूरस्थ Maven रिपोजिटरी से सुविधाओं डाउनलोड करने के लिए eclipse-repository
पैकेजिंग प्रकार के निर्माण के लिए जिम्मेदार हो सकता है है? या किसी भी अन्य तरीके से मैं प्लगइन से पी 2 भंडार का निर्माण कर सकता हूं जिसे मैवेन रिपोजिटरी में व्यक्तिगत रूप से बनाया और तैनात किया गया है?
बातें मैं कोशिश की है में शामिल हैं:
- दोनों
jar
औरeclipse-feature
स्पष्ट रूप से लक्ष्य मंच के लिए सुविधाओं को जोड़कर के रूप में Maven सुविधा depedencies specifiying,
तरह... <artifactId>target-platform-configuration</artifactId> <version>${tycho.version}</version> <configuration> <dependency-resolution> <extraRequirements> <requirement> <type>eclipse-feature</type> <id>my.prj.eclipse.project.feature</id> <versionRange>0.0.0</versionRange> </requirement> ...
निकटतम जो चीज़ मुझे एक सभ्य समाधान में मिली है, उसके पास बहु-मॉड्यूल टाइपो प्रोजेक्ट है जिसमें केवल भंडार और सुविधाएं शामिल हैं। सभी प्लग इन उच्च-स्तरीय पोम को जोड़ा गया नेक्सस से डाउनलोड कर रहे हैं, प्रत्येक सुविधा में शामिल किए जाने के लिए उपलब्ध और उत्पन्न भंडार में शामिल -
feature-project
|- feature1 (eclipse-feature)
|- feature2 (eclipse-feature)
|- repository (eclipse-repository)
इस बिल्डिंग काम करता है।
हालांकि यह आदर्श से बहुत दूर है क्योंकि अब मैं अपने प्लगइन के साथ तर्कसंगत रूप से अपनी सुविधाओं को स्टोर नहीं कर सकता; उन्हें अलग परियोजना पदानुक्रमों में होना चाहिए। mvn clean verify -pl :feature1,feature2,repository
के साथ अलग-अलग सुविधाओं और भंडार को अलग करने का प्रयास करते हुए, Bug 380152 के कारण संभावित रूप से विफल हो जाता है।
क्या कोई बेहतर तरीका है? किसी भी तरह की सहायता कृतज्ञतापूर्वक स्वीकार की जाएगी।
बहुत धन्यवाद
(के रूप में एक अलग रूप में: mvn clean verify -Dtycho.localArtifacts=ignore
साथ भंडार के निर्माण सफल होगा अगर सुविधाओं स्थानीय Maven भंडार में मौजूद हैं, और आप चेतावनी है कि कलाकृतियों किया जा रहा है नहीं दिखाया जाएगा स्थानीय रेपो से हल ... क्या यह एक बग है?)
आपकी तरफ से टिप्पणी के बारे में: यदि दूरस्थ मैवेन रिपॉजिटरीज़ से पीओएम निर्भरता डाउनलोड की जाती है, और स्थानीय निर्माण से पी 2 मेटाडेटा/पी 2artifacts हैं, तो Tycho मानता है कि वे एक साथ हैं। यह वास्तव में एक बग है। – oberlies