विभिन्न बिल्ड प्रोफाइल के लिए अलग-अलग निर्भरता


115

क्या अलग-अलग प्रोफाइल के लिए मावेन pom.xml फ़ाइल में निर्भरता का एक अलग सेट होना संभव है?

जैसे

mvn -P debug
mvn -P release

मैं एक प्रोफ़ाइल में एक अलग निर्भरता जार फ़ाइल लेना चाहता हूं जिसमें समान वर्ग नाम और समान इंटरफ़ेस के अलग-अलग कार्यान्वयन हैं।


विभिन्न वेब सर्वर को लक्षित करते समय इसका उपयोग किया जा सकता है। उदाहरण के लिए, जब JavaE 5 सर्वर के लिए निर्माण होता है, जो JAXB जैसे कार्य प्रदान करता है, जिसे आपको अपनी युद्ध फाइल में शामिल नहीं करना चाहिए, जैसे कि JavaEE 1.4 सर्वर के लिए भवन, जहां आपको JAXB जार शामिल करना चाहिए।
लियोनेल

जवाबों:


174

इस पर मावेन प्रलेखन उद्धृत करने के लिए :

एक प्रोफ़ाइल तत्व में एक वैकल्पिक सक्रियण (एक प्रोफ़ाइल ट्रिगर) और POM में किए जाने वाले परिवर्तनों का सेट शामिल होता है, यदि उस प्रोफ़ाइल को सक्रिय कर दिया गया हो। उदाहरण के लिए, एक परीक्षण वातावरण के लिए बनाई गई परियोजना अंतिम तैनाती की तुलना में एक अलग डेटाबेस को इंगित कर सकती है। या निर्भरता JDK उपयोग किए गए संस्करण के आधार पर विभिन्न रिपॉजिटरी से खींची जा सकती है

(जोर मेरा है)

releaseप्रोफ़ाइल घोषणा के अंदर प्रोफ़ाइल के लिए केवल निर्भरता डालें और इसके लिए भी ऐसा ही करें debug

<प्रोफाइल>
    <प्रोफ़ाइल>
        <आईडी> डिबग </ आईडी>
        ...
        <निर्भरता>
            <निर्भरता> ... </ निर्भरता>
        </ निर्भरता>
        ...
    </ प्रोफ़ाइल>
    <प्रोफ़ाइल>
        <आईडी> रिहाई </ आईडी>
        ...
        <निर्भरता>
            <निर्भरता> ... </ निर्भरता>
        </ निर्भरता>
        ...
    </ प्रोफ़ाइल>
</ प्रोफाइल>

2
यह विधि संपादन मोड में कोड अनसुलझे का कारण बनेगी। यदि डीबग सक्रिय है, तो रिलीज़ का निर्भरता जार अनुपलब्ध होगा, और कोड त्रुटि होगी। इसे कैसे हल करें?
ब्रुकेन

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

@ युद अगर आप उस दृष्टिकोण को दर्शाने के लिए एक जवाब डालेंगे, तो मैं इसे
अपवित्र

IMHO प्रोफाइल बेकार है, कम से कम निर्भरता के लिए: आईडीई त्रुटियां देता है, निर्भरताएं हल करना बंद कर देती हैं, आवेदन अंत में काम नहीं कर रहे हैं। मैं और उम्मीद कर रहा था।
एरेस

6

आपके GroupId, विरूपण साक्ष्य को गुण के रूप में आपके प्रोफाइल में टोकन होना चाहिए और आप अपनी निर्भरता को जेनेरिक सेक्शन में ले जा सकते हैं।


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

अन्य जवाब मेरे लिए काम नहीं किया, क्योंकि डिफ़ॉल्ट प्रोफ़ाइल निर्भरता अभी भी अन्य विशिष्ट प्रोफ़ाइल निर्भरता के साथ शामिल थे। आपका जवाब ठीक काम किया।
व्लादिमहलसीया

@ व्लाद क्या आपने पोम के मुख्य शरीर से निर्भरता को हटा दिया था? वरना आपके पास दो बार होगा। (देखें कि stackoverflow.com/q/24855678/6944068 यह सुनिश्चित करने के बारे में कि एक प्रोफ़ाइल हमेशा सक्रिय रहती है।)
टूलबार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.