2010-06-30 6 views
11

में स्थापित है, मेरे पास एक परियोजना है जिसमें 3 अलग-अलग पुस्तकालय शामिल हैं। जब मैं इंस्टॉल स्क्रिप्ट चलाता हूं तो यह रेपो से सभी पुस्तकालयों को लेता है और उन पर एमवीएन क्लीन इंस्टॉल चलाता है। लेकिन लाइब्रेरी का यह संस्करण पहले ही रेपो में स्थापित है। यदि मेरे स्थानीय रेपो में pom.xml बराबर संस्करण में संस्करण है तो स्थापित चरण को छोड़ने का कोई तरीका है।मैवेन बिल्ड में स्थापित चरण को कैसे छोड़ें यदि मेरे पास पहले से ही यह संस्करण रेपो

मुझे पता है कि मैं स्थानीय रेपो का उपयोग कर सकता हूं और केवल निर्भरता सेट कर सकता हूं। लेकिन मेरा मालिक चाहता है कि हमारी परियोजना केवल सार्वजनिक रिपो के साथ और हमारे किसी भी प्रतिनिधि के बिना ही बना सके।

+0

ओलिवर लेमी भी समझौता 'https: // jira.codehaus.org/ब्राउज़/MINSTALL-73' – Cemo

उत्तर

25

आप इस

-Dmaven.install.skip = सच

<profiles> 
    <profile> 
    <id>skipInstall</id> 
    <activation> 
     <property> 
     <name>maven.install.skip</name> 
     <value>true</value> 
     </property> 
    </activation> 
    <build> 
     <pluginManagement> 
     <plugins> 
      <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-install-plugin</artifactId> 
      <executions> 
       <execution> 
       <id>default-install</id> 
       <phase>none</phase> 
       </execution> 
      </executions> 
      </plugin> 
     </plugins> 
     </pluginManagement> 
    </build> 
    </profile> 

पिछले हफ्ते ओलिवर लेमी इस jira समझौता तरह बायपास कर सकते हैं।

MINSTALL-73

+0

यह समाधान नहीं हुआ मेरे लिए काम। मैंने यह भी देखा कि maven settings.xml फ़ाइल में एक चेतावनी थी कि तत्व 'अपरिचित' है। मैं एक जवाब में अपना समाधान पेश करूंगा। – Doug

1

मुझे पता है कि मैं स्थानीय रेपो का उपयोग कर सकता हूं और केवल निर्भरता सेट कर सकता हूं। लेकिन मेरा मालिक चाहता है कि हमारी परियोजना केवल सार्वजनिक रिपो के साथ और हमारे किसी भी प्रतिनिधि के बिना ही बना सके।

क्या आप वाकई सही ढंग से समझ गए हैं कि आप का क्या मतलब है? मैं उपर्युक्त की व्याख्या करता हूं कि "अपने स्थानीय भंडार में तीसरे पक्ष के पुस्तकालयों को स्थापित न करें, सार्वजनिक भंडारों में उपलब्ध पुस्तकालयों का उपयोग करें"। यह "अपने स्थानीय भंडार का उपयोग न करें" से अलग है जो मूल रूप से असंभव है, यह सिर्फ मैवेन काम नहीं करता है। मैं इस बिंदु को स्पष्ट करने की कोशिश करता हूं।

इसके अलावा, मुझे यह प्रश्न नहीं मिलता है जो बहुत भ्रमित है (आप किस रेपो के बारे में बात कर रहे हैं? इंस्टॉल स्क्रिप्ट क्या कर रही है? आप पुस्तकालयों पर क्लीन इंस्टॉल क्यों कहते हैं? आदि)।

 <plugin> 
      <artifactId>maven-install-plugin</artifactId> 
      <version>X.Y</version> 
      <configuration> 
      <skip>true</skip> 
      </configuration> 
     </plugin> 

आप भी निर्माण प्रोफाइल गुण सेट और प्रयोग है कि मूल्य निर्धारित करने के लिए स्थापित कर सकते हैं:

8

अधिकांश Maven प्लगइन्स की तरह कुछ निर्दिष्ट द्वारा छोड़ा जा सकता है। उदाहरण के लिए, कमांड चला रहा है: mvn -Pexample "उदाहरण" प्रोफ़ाइल का चयन करेगा। पोम तो होते हैं:

... 
    <properties> 
    <skip.install>false</skip.install> 
... 
    </properties> 

... 
    <profile> 
     <id>example</id> 
     <properties> 
     <skip.install>false</skip.install> 
     </properties> 
    </profile> 
... 
    <plugin> 
     <artifactId>maven-install-plugin</artifactId> 
     <version>X.Y</version> 
     <configuration> 
     <skip>${skip.install}</skip> 
     </configuration> 
    </plugin> 
... 

इन पोम अतिरिक्त का उपयोग करना, स्थापित प्लगइन के लिए डिफ़ॉल्ट व्यवहार को उसके डिफ़ॉल्ट लक्ष्य प्रदर्शन करने के लिए किया जाएगा, लेकिन अगर उदाहरण प्रोफ़ाइल चयनित है, फिर स्थापित प्लगइन अपने लक्ष्य को छोड़ देगा।

+0

यह सबसे अच्छा समाधान है। लेकिन सभी प्लगइन्स "छोड़ें" नहीं हैं। – ximage

+0

क्या प्लगइन स्थापित करने के लिए एक स्किप कॉन्फ़िगरेशन है? – Cemo

+1

'maven-install-plugin' में 'skip' कॉन्फ़िगरेशन पैरामीटर नहीं है। प्रदान किया गया समाधान मूल रूप से बिल्कुल काम नहीं करता है। –

3

का उपयोग मैं क्या अन्य उत्तर से सीखा, यह मेरे लिए साफ परिणाम था।

मेरे सुपर पोम में मैंने एक प्लगइन जोड़ा है मैनेजमेंट/प्लगइन डिफ़ॉल्ट-स्थापित और डिफ़ॉल्ट-परीक्षण चरणों को अक्षम करने के लिए जब deployOnly सेट किया गया है।

  <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-install-plugin</artifactId> 
       <version>2.5.2</version> 
       <executions> 
        <execution> 
         <id>default-install</id> 
         <configuration> 
          <skip>${deployOnly}</skip> 
         </configuration> 
        </execution> 
        <execution> 
         <id>default-test</id> 
         <configuration> 
          <skip>${deployOnly}</skip> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

तो कमांड लाइन पर, मैं -DdeployOnly जोड़कर स्थापित करने और परीक्षण चरणों निष्क्रिय कर सकते हैं।

mvn clean install  #build and test everything 
mvn deploy -DdeployOnly #just deploy it 
संबंधित मुद्दे