2012-04-05 16 views
5

मैं एक विरूपण साक्ष्य है कि कई लक्ष्य प्लेटफार्मों के लिए बनाया जाना चाहिए है:सिंक्रनाइज़ किया जा रहा विरूपण साक्ष्य संस्करणों

  • लिनक्स 86
  • विंडोज 86
  • ARM11

दुर्भाग्य कारण क्रॉसकंपलरों की कमी के लिए, एक ही समय में आर्टिफैक्ट के सभी संस्करणों को बनाना संभव नहीं है।

दूसरे शब्दों का उपयोग करना, लक्ष्य इस

  • artifact-1.0.0-linux.zip
  • artifact-1.0.0-windows.zip
  • विरूपण साक्ष्य की तरह भंडार कुछ में है -1.0.0-arm11.zip
  • artifact-1.0.1-linux.zip
  • artifact-1.0.1-windows.zip
  • artifact-1.0.1-arm11.zip
  • ...

ध्यान दें कि संस्करण सिंक में हैं। इसे कैसे पूरा करें?

बात यह है कि रिलीज प्रक्रिया प्रत्येक निर्माण के बाद pom.xml के संस्करण को अपग्रेड करती है। तो विभिन्न प्लेटफार्मों पर लगातार निर्माण करके मैं होने

  • artifact-1.0.0-linux.zip
  • artifact-1.0.1-windows.zip
  • artifact-1.0.2-arm11.zip प्राप्त कर सकते हैं
  • artifact-1.0.3-linux.zip
  • artifact-1.0.4-windows.zip
  • artifact-1.0.5-arm11.zip
  • ...

लेकिन यह वह नहीं है जिसे मैं ढूंढ रहा हूं।

मैं लिनक्स

पर

mvn रिहाई

  1. रन सकता है: तैयार रिहाई: प्रदर्शन -DpushChanges = false

    (झूठी रिलीज़ संस्करण संख्या में वृद्धि नहीं होगी करने के लिए सेट pushChanges साथ एससीएम में)

  2. और फिर विंडोज

    पर चलाएं

    mvn रिहाई: तैयार रिलीज: प्रदर्शन

    (इस संस्करण की संख्या में वृद्धि होगी)

लेकिन फिर जिम्मेदारी विभिन्न प्लेटफार्मों पर रिहाई की प्रक्रिया में उचित क्रम मेरे साथ झूठ को गति प्रदान करने। क्या मावेन इस तरह मेरी मदद कर सकता है?

क्या आपके पास कोई सुझाव है?

धन्यवाद


पी एस। ध्यान दें कि यह मॉड्यूल में व्यवस्थित करने के बारे में कोई सवाल नहीं है। यह कई प्लेटफार्मों पर एक आर्टिफैक्ट की रिलीज प्रक्रियाओं को सिंक्रनाइज़ करने के तरीके के बारे में है।

उत्तर

0

के रूप में मैं देख रहा हूँ, आप विभिन्न विरूपण साक्ष्य के जारी संस्करण, विशिष्ट प्लेटफार्मों के लिए इरादा भेद करने के लिए linux, windows या arm11 तरह classifiers (विरूपण साक्ष्य की फ़ाइल का नाम प्रत्यय) का उपयोग करें। इसलिए, यदि आप मेवेन द्वारा प्रबंधित बहु-मॉड्यूल प्रोजेक्ट बनाते हैं, जहां मॉड्यूल एक ही groupId, उसी artifactId, उसी version (शायद उनके सामान्य माता-पिता से विरासत में प्राप्त) के साथ कलाकृतियों के साथ होंगे, लेकिन अलग-अलग classifier, आपको वही मिल जाएगा जो आप चाहते हैं। इस तरह के मामले में, आप हमेशा अपने मल्टी-मॉड्यूल पीओएम को जारी करते हैं (आमतौर पर यह मॉड्यूल के लिए सामान्य माता-पिता भी होता है) ताकि सभी मॉड्यूल एक बार में रिलीज़ हो सकें। एक ही संस्करण-सभी-मॉड्यूल-नीति के लिए (जो बहुत अच्छी तरह से यहाँ फिट करने के लिए लगता है) मान लिया जाये, तो आप मूल रूप से निष्पादित कर सकते हैं:

mvn release:prepare release:perform -DautoVersionSubmodules

और बस इतना ही। आपको artifact-1.0.0-linux.zip, artifact-1.0.0-windows.zip, artifact-1.0.0-arm11.zip कलाकृतियों को जारी किया जाएगा। अगला विकास संस्करण सभी मॉड्यूल के लिए 1.0.1-SNAPSHOT पर सेट किया जाएगा (माता-पिता से विरासत के माध्यम से)।

+0

लेकिन मेरा मुद्दा यह है कि जब आप लिनक्स पर हों, तो आप विंडोज़ के लिए बाइनरी नहीं बना सकते हैं (कुछ टूलचैन बाधाओं के कारण)। तो लिनक्स पर चलने पर निर्माण प्रक्रिया, विंडोज़ बाइनरी नहीं बना सकती है। और इसके विपरीत। तो आप एक ही समय में सभी प्लेटफार्मों के लिए सभी बाइनरी नहीं बना सकते हैं। --- यह मॉड्यूल में व्यवस्थित करने के बारे में कोई सवाल नहीं है। यह कई प्लेटफार्मों पर एक आर्टिफैक्ट की रिलीज प्रक्रियाओं को सिंक्रनाइज़ करने के तरीके के बारे में है। –

+0

ठीक है, इसलिए मुझे डर है कि मैवेन आपको जितनी चाहें उतनी स्वचालित रूप से ऐसा करने में आपकी सहायता नहीं कर सकता, जब तक कि आप अपनी रिलीज प्लगइन बनाने के लिए (और कुछ समय लें)। जैसा कि आपने बताया है, आप एक संस्करण को बंप किए बिना सभी relesese कर सकते हैं और फिर अंत में इसे वैश्विक रूप से बम कर सकते हैं, लेकिन यह कुछ है जो आपको याद रखना है। आप सामान्य संस्करण (माता-पिता से विरासत में) को भी छोड़ सकते हैं और सभी मॉड्यूल के पीओएम पर शाब्दिक संस्करण टाइप कर सकते हैं। इस बार हालांकि, आपको इस प्रक्रिया को नियंत्रित करना है और यह सुनिश्चित करना है कि सभी मॉड्यूल संस्करण के साथ जारी किए गए हैं और प्रत्येक मॉड्यूल एक बार जारी किया जाता है। मैं वास्तव में 100% स्वचालित तरीका नहीं देख सकता। –

+0

मैं हमेशा समय पर छोटा हूं :) वैसे भी, मदद के लिए धन्यवाद। –

2

क्या आपको अभी तक इसका समाधान मिला है? यह जानना मैं केवल एक :-)

वैसे भी Maven के साथ लड़ नहीं कर रहा हूँ अच्छा है,

आप गठजोड़ करने के लिए एक संस्करण जारी तैनात करने की अनुमति है? मैं सोच रहा हूँ, आप ऐसा कर सकता है:

1 - एक करो "mvn जारी: तैयार रिहाई: प्रदर्शन" एक विंडोज़ मशीन से - कि गठजोड़ में artifact-1.0.1-windows.zip मिलना चाहिए।

2 - आर्टिफैक्ट-1.0 चेकआउट करें।स्रोत नियंत्रण से 1 टैग

3 - लिनक्स और arm11 (जो भी है: पी) से "एमवीएन तैनाती" करें - जो -xux.zip और -arm11.zip को नेक्सस में भी मिलना चाहिए।

हालांकि, मेरा मानना ​​है कि कैसे गठजोड़ कॉन्फ़िगर किया गया है के आधार पर यह नहीं दूँगी कि आप एक ही GAV (भले ही वर्गीकारक अलग है)

0

के साथ कुछ भी पुनर्वितरित तुम मुझे अपने प्रश्न के साथ बाहर की मदद की है ... मैं pushChanges = झूठी विकल्प के बारे में नहीं पता था।

Jenkins का उपयोग करके आप प्रत्येक प्लेटफार्म पर नौकरी स्थापित कर सकते हैं जो "ट्रिगर दूरस्थ रूप से बनाता है (उदाहरण के लिए, स्क्रिप्ट से)" सुविधा का उपयोग करके श्रृंखला में मेवेन रिलीज करता है। यदि आप चाहें, तो आप किस पैरामीटर को बनाने के लिए चुनने के लिए पैरामीटरेटेड बिल्ड का उपयोग कर सकते हैं (यदि आप इसका उपयोग करते हैं, तो आपको अन्य प्लेटफार्मों पर निर्माण को ट्रिगर करने के लिए Parameterized Trigger Plugin की आवश्यकता है)।

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