मावेन: मैं कमांड लाइन से प्रोफ़ाइल को कैसे सक्रिय कर सकता हूं?


81

यह मेरे pom.xml से एक स्निपेट है। मैंने निम्नलिखित की कोशिश की, लेकिन प्रोफ़ाइल सक्रिय नहीं हुई।

mvn clean install -Pdev1
mvn clean install -P dev1

जब मैंने कोशिश की तो mvn help:active-profilesकोई प्रोफाइल सक्रिय नहीं थी। अगर मैं सेट <activeByDefault>के लिए dev1करने के लिए true, और रन mvn help:active-profiles, यह मेरे से पता चलता प्रोफाइल सक्रिय है।

<profile>
        <id>dev1</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <systemPropertyVariables>
                            <env>local</env>
                            <properties.file>src/test/resources/dev1.properties</properties.file>
                        </systemPropertyVariables>
                        <suiteXmlFiles>
                            <suiteXmlFile>src/test/resources/dev1.testng.xml</suiteXmlFile>
                        </suiteXmlFiles>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
    <profile>
        <id>dev2</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <systemPropertyVariables>
                            <env>local</env>
                            <properties.file>src/test/resources/dev2.properties</properties.file>
                        </systemPropertyVariables>
                        <suiteXmlFiles>
                            <suiteXmlFile>src/test/resources/dev2.testng.xml</suiteXmlFile>
                        </suiteXmlFiles>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

मैं सोच रहा हूं कि मेरी प्रोफ़ाइल सक्रिय क्यों नहीं हो रही है। क्या किसी को भी इस तरह के मुद्दे का सामना करना पड़ा है?


कम से कम -P
मावेन

जवाबों:


90

दोनों आदेश सही हैं:

mvn clean install -Pdev1
mvn clean install -P dev1

समस्या सबसे अधिक संभावना है कि प्रोफ़ाइल सक्रियण नहीं है, लेकिन प्रोफ़ाइल वह पूरा नहीं कर रही है जिसकी आप अपेक्षा करते हैं

यह सामान्य है कि कमांड:

mvn help:active-profiles

प्रोफ़ाइल प्रदर्शित नहीं करता है, क्योंकि इसमें शामिल नहीं है -Pdev1। आप इसे प्रोफ़ाइल बनाने के लिए जोड़ सकते हैं, लेकिन यह व्यर्थ होगा क्योंकि आप स्वयं मावेन का परीक्षण करेंगे।

आपको निम्न कार्य करके प्रोफ़ाइल व्यवहार की जाँच करनी चाहिए :

  1. सेट activeByDefaultकरने के लिए trueप्रोफ़ाइल विन्यास में,
  2. चलाने के लिए mvn help:active-profiles(यह सुनिश्चित करने के लिए कि यह बिना प्रभावी ढंग से भी सक्रिय है -Pdev1)
  3. भागना mvn install

यह पहले की तरह ही परिणाम दे, और इसलिए पुष्टि करें कि समस्या वह है जो आप उम्मीद नहीं कर रहे हैं।


1
हां, जब मैं सक्रिय बायफॉल्ट को सही पर सेट करता हूं, तो यह एमवीएन मदद के तहत दिखाता है: सक्रिय-प्रोफाइल। लेकिन mvn क्लीन इनस्टॉल -Pdev1 निष्पादित करने से प्रोफाइल सक्रिय नहीं होता है।
अकर्मण्य

14

सिस्टम गुणों द्वारा सक्रियण निम्नानुसार किया जा सकता है

<activation>
    <property>
        <name>foo</name>
        <value>bar</value>
    </property>
</activation>

और सिस्टम प्रॉपर्टी सेट करने के लिए -D के साथ mvan बिल्ड को चलाएं

mvn clean install -Dfoo=bar

यह विधि प्रोजेक्ट कलाकृतियों की सकर्मक निर्भरता में प्रोफाइल का चयन करने में भी मदद करती है।


मेरे मामले में गुण जगह धारकों को * .प्रतिरूपों में प्रतिस्थापित नहीं कर रहे हैं, क्या आप कृपया stackoverflow.com/questions/51186963/…
vikramvi

11

मैंने इस समस्या का सामना किया है और मैंने -DprofileIdEnabled=truemvn cli कमांड चलाते समय पैरामीटर को जोड़कर समस्या का हल किया है ।

के रूप में अपने mvn CLI आदेश चला करें: mvn clean install -Pdev1 -DprofileIdEnabled=true

इस समाधान के अलावा, आपको अपने POM में सक्रियByDefault सेटिंग्स को हटाने की आवश्यकता नहीं है जो कि पूर्व उत्तर के रूप में उल्लिखित है।

मुझे उम्मीद है कि यह जवाब आपकी समस्या को हल करेगा।


कोई व्यक्ति तेजी से निर्माण करने के लिए परीक्षण भी छोड़ना चाहता हो सकता है mvn क्लीन इंस्टॉल -release -DprofileIdEnabled = true -DskipTests
Yeasin Ar Rahman

5

बस सक्रियण अनुभाग को हटा दें, मुझे नहीं पता कि -Pdev1 डिफ़ॉल्ट गलत सक्रियण को ओवरराइड क्यों नहीं करता है। लेकिन अगर आप इसे छोड़ देते हैं:

<activation> <activeByDefault>false</activeByDefault> </activation>

तब आपकी प्रोफ़ाइल सक्रिय रूप से घोषित होने के बाद ही सक्रिय हो जाएगी -देव 1

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.