2012-03-27 15 views
5

प्राप्त करने के लिए मेवेन प्रोजेक्ट में पर्सफोर्स स्किम को कॉन्फ़िगर करना मैं मैवेन में एक प्रोजेक्ट माइग्रेट कर रहा हूं और जैसा कि हम हमेशा हमारे पर्सफोर्स एससीएम रिपोजिटरी में नवीनतम परिवर्तन संख्या द्वारा हमारे निर्माण को संदर्भित करने के लिए उपयोग किए जाते थे, मैं इसे निकालने में सक्षम होना चाहता हूं जानकारीनवीनतम चेंजलिस्ट

मैं निम्न संसाधनों के माध्यम से Maven एससीएम प्लगइन कॉन्फ़िगर करने के लिए कोशिश कर रहा हूँ: सामान्य उपयोग के लिए

सबसे पहले मुझे समझ नहीं आता कि यह काम करने के लिए कैसे, तो अगर किसी को एक पूरी तरह से काम कर रहे उदाहरण है, मैं खुश करने के लिए, मेरे पक्ष पर मैं अपने पोम में जोड़कर की कोशिश की है हो जाएगा:

<scm> 
    <connection> 
     scm:perforce:localhost:1666://depot/ 
     <my_project> 
      /
      <version> 
    </connection> 
    <developerConnection> 
     scm:perforce:localhost:1666:/depot/ 
     <my_project> 
      /
      <version> 
    </developerConnection> 
    <url>http://somerepository.com/view.cvs</url> 
</scm> 
... 
<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-scm-plugin</artifactId> 
     <version>1.6</version> 
     <dependencies> 
      <!-- P4Maven --> 
      <dependency> 
       <groupId>com.perforce</groupId> 
       <artifactId>p4maven</artifactId> 
       <version>[2011,2012)</version> 
      </dependency> 
     </dependencies> 
     <configuration> 
      <connectionType>//depot/proto/kernel/kernel/04.00/maven2</connectionType> 
      <username>my local username</username> 
      <password>xxxxxx</password> 
      <includes>**</includes> 
     </configuration> 
    </plugin> 
</plugins> 

यह मेरे लिए अग्रणी है:

[INFO] --- maven-scm-plugin:1.6:checkout (default-cli) @ kernel --- 
mars 27, 2012 9:54:08 AM org.sonatype.guice.bean.reflect.Logs$JULSink warn 
Avertissement: Error injecting: org.apache.maven.scm.provider.svn.svnexe.SvnExeScmProvider 
java.lang.NoClassDefFoundError: org/apache/maven/scm/command/info/InfoScmResult 

निश्चित रूप से कुछ भूल गया, मैं फिर से निर्देश पढ़ें और मैं क्या याद आती है, लेकिन अगर किसी को भी जानता है देखने के लिए कोशिश करेंगे ...

वैसे भी, मेरे सवाल का नहीं बल्कि यह है: है यह वाह कोशिश कर रहा हूँ? मुझे एसएमएम प्लगइन से उपलब्ध कार्यों में कुछ भी नहीं दिख रहा है जो मुझे अंतिम परिवर्तन जानकारी प्राप्त करने में मदद करेगा और इसे संदर्भ निर्माण संख्या में एकीकृत करेगा। क्या मैं इसके लिए अपनी खुद की प्लगइन विकसित करूंगा?

अग्रिम धन्यवाद।

उत्तर

2

मुझे पी 4 मेवेन डेवलपर्स में से एक से कुछ सलाह मिली जो मदद कर सकती है।

सबसे पहले, अपनी कॉन्फ़िगरेशन जांचें। टैग में "..." टैग में टैग नामों में से एक होना चाहिए (यानी "कनेक्शन" या "डेवलपर कनेक्शन")

पेर्सफोर्स एससीएम के साथ मेवेन का उपयोग करने के लिए दो विकल्प हैं।

  1. डिफ़ॉल्ट (बिल्ट-इन) Maven लाज़िमी एससीएम प्रदाता (p4 कमांडलाइन आधारित)

    • नोट आप p4 कमांडलाइन निष्पादन योग्य स्थापित की आवश्यकता होगी कि प्रयोग करें
    • आप इस उपयोगकर्ता नाम सेट कर सकते हैं और पासवर्ड वातावरण चर या JVM args का उपयोग कर

[वातावरण चर] P4CLIENT = P4USER = P4PASSWD =

या

[JVM args] -Dusername = -Dpassword =

[pom.xml] ...

... 

    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-scm-plugin</artifactId> 
    <version>1.4</version> 
    </plugin> 

    ... 

...

<!-- SCM Settings --> 
    <scm> 
    <connection>scmerforce:localhost:1666://depot/someproject</connection> 
    <developerConnection>scmerforce:localhost:1666://depot/someproject</developerConnection> 
    <url>scmerforce://depot/simple</url> 
    </scm> 

...

  1. उपयोग P4Maven लाज़िमी एससीएम प्रदाता (P4Java आधारित)

[pom.xml]

...

... 

    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-scm-plugin</artifactId> 
    <version>1.4</version> 
    <dependencies> 
     <!-- P4Maven --> 
     <dependency> 
     <groupId>com.perforce</groupId> 
     <artifactId>p4maven</artifactId> 
     <version>[2011,2012)</version> 
     </dependency> 
    </dependencies> 
    <configuration> 
     <connectionType>connection</connectionType> 
     <username>someuser</username> 
     <password>somepassword</password> 
     <includes>**</includes> 
    </configuration> 
    </plugin> 

    ... 

...

scm4: स्थानीय होस्ट: 1666: // डिपो/someproject scm4 : लोकहोस्ट: 1666: // डिपो/कुछ प्रोजेक्ट एसएमएम 4: // डिपो/कुछ प्रोजेक्ट

...

  • ध्यान दें कि P4Maven के लिए हम "Maven-SCM-प्लगइन" प्लगइन के अंदर डिफ़ॉल्ट प्रदाता अधिभावी कर रहे हैं।

  • ध्यान दें कि हम प्रदाता नाम के रूप में "scmperforce" (अंतर्निहित डिफ़ॉल्ट) के बजाय "scmp4" (P4Maven का उपयोग करते हुए) का उपयोग कर रहे हैं, क्योंकि "perforce" मौजूदा डिफ़ॉल्ट कार्यान्वयन द्वारा लिया जाता है।

+0

उत्तर के लिए धन्यवाद, मैं कोशिश करूँगा और उसके बाद वापस आऊंगा – Gurvan

1

मैं हाल ही में बिल्कुल एक ही समस्या के साथ संघर्ष कर रहा था - मैं सिर्फ यह (एक नाम के एक भाग के रूप में उदाहरण के लिए) Maven कलाकृतियों में उपयोग करने के लिए एक लाज़िमी संशोधन संख्या प्राप्त करना चाहता था। मैंने buildnumber-maven-plugin की जांच की, लेकिन यह बिल्कुल बलफोर्स का समर्थन नहीं करता है। मैंने maven-release-plugin भी कोशिश की, लेकिन ऐसा लगता है क्योंकि यह बहुत अधिक करता है और मुझे यह भी पता नहीं चला कि मुझे क्या चाहिए।

वैसे भी मैं एक समाधान के साथ समाप्त हुआ जो मुझे पसंद नहीं है, लेकिन यह काम करता है। मुझे यह संशोधन संख्या सीधे एंटी और एंटर प्लगइन के माध्यम से पी 4 निष्पादन योग्य के साथ मिलती है (आपको मैवेन में चींटी संपत्ति निर्यात करने के लिए नवीनतम 1.7 संस्करण का उपयोग करना होगा)। आपको पी 4 निष्पादन योग्य भी उपलब्ध होना चाहिए।

इस प्लगइन कॉन्फ़िगरेशन का उपयोग करने के बाद आपके पास $ {revision.number} मेवेन में उपलब्ध है।

<!-- Get Perforce latest change number --> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.7</version> 
    <dependencies> 
     <dependency> 
      <groupId>ant-contrib</groupId> 
      <artifactId>ant-contrib</artifactId> 
      <version>1.0b3</version> 
     </dependency> 
    </dependencies> 
    <configuration> 
     <exportAntProperties>true</exportAntProperties> 
    </configuration> 
    <executions> 
     <execution> 
      <phase>validate</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <target> 
        <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="maven.plugin.classpath"/> 
        <!-- Login to p4 --> 
        <exec executable="p4" inputstring="${p4.password}"> 
         <arg value="-p${p4.server}"/> 
         <arg value="-c${p4.client}"/> 
         <arg value="-u${p4.username}"/> 
         <arg value="login"/> 
        </exec> 
        <!-- Get reivision description text --> 
        <exec executable="p4" outputproperty="revision.description"> 
         <arg value="-p${p4.server}"/> 
         <arg value="-c${p4.client}"/> 
         <arg value="-u${p4.username}"/> 
         <arg value="changes"/> 
         <arg value="-m1"/> 
         <arg value="//...#have"/> 
        </exec> 
        <!-- Logout from p4 --> 
        <exec executable="p4"> 
         <arg value="-p${p4.server}"/> 
         <arg value="-c${p4.client}"/> 
         <arg value="-u${p4.username}"/> 
         <arg value="logout"/> 
        </exec> 

        <!-- Parse revision description to retrieve only revision number --> 
        <propertyregex property="revision.number" 
            input="${revision.description}" 
            regexp="Change ([0-9]*) on ([a-z,0-9]*)" 
            select="\1" 
            casesensitive="false"/> 

        <echo>Perforce latest revision number: ${revision.number}</echo> 
       </target> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+0

हाय, आखिरकार मैं आपके जैसा ही कर रहा हूं, लेकिन एक मेवेन प्लगइन कर रहा हूं। वास्तव में बहुत संतोषजनक नहीं है। – Gurvan

+0

मुझे आशा है कि एक बेहतर समाधान होगा। – banterCZ

0

यह एक कुछ वर्षों के बाद से प्रश्न पूछा गया था चुके हैं, लेकिन अंतराल p4maven में फिर से लिखा गया है, और अद्यतन प्रलेखन पूर्णतया खोजने के लिए मुश्किल है।

यहां नया README.md है। मैंने इसका पीछा किया और सबकुछ काम करता है। इस बिंदु पर, 1.0.6 maven central में नवीनतम संस्करण है।

मैंने मेवेन बिल्ड नंबर प्लगइन पृष्ठ पर एक लिंक से स्रोत की खोज की।

0

मैं इसी तरह के मुद्दे के समाधान की खोज करते समय यहां पहुंचा "कोई कॉन्फ़िगरेशन निर्धारित नहीं किया जा सकता" जिसे मैंने कोड सहयोगी क्लाइंट के साथ पी 4 के साथ सामना किया। मैं पी 4 क्लाइंट को अनइंस्टॉल करने और इसे काम करने के लिए पुनः इंस्टॉल करने में समाप्त हुआ।

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