2010-02-17 19 views
16

किसी को भी मेवेन के साथ सी # आधारित परियोजनाओं के प्रबंधन का अनुभव था?सी # मेवेन के साथ परियोजना प्रबंधन

यदि हां, तो कृपया मुझे इसके बारे में कुछ शब्द बताएं, इस तरह के सेटअप को बनाने के लिए कितना अजीब होगा।

धन्यवाद

उत्तर

20

Maven भाषा नास्तिक है और इसके साथ इसका इस्तेमाल करने के लिए संभव होना चाहिए जावा की तुलना में अन्य भाषाओं, सी # सहित। उदाहरण के लिए, Maven Compiler Plugin को csharp कंपाइलर का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है। .NET Maven plugin भी है और javaforge.com पर एक maven-csharp था (मृत लगता है)।

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

0

codeplex पर एक NMaven परियोजना नहीं है, लेकिन यह सक्रिय या लोकप्रिय हो प्रतीत नहीं होता। यह भी देखें इन सवालों:

4

आप NPanday (यह एक परियोजना है जिसमें मैं शामिल हूं) भी देख सकता हूं। हालांकि इसे अभी भी मेवेन के सर्वोत्तम प्रथाओं के साथ अधिक बारीकी से संरेखित करने के लिए कुछ काम की जरूरत है, यह अब उपलब्ध सबसे पूर्ण और सक्रिय विकल्प है। आईडीई से सही pom.xml उत्पन्न करने के लिए एक दृश्य जो विजुअल स्टूडियो ऐड-इन का अस्तित्व है।

12

मैं सी # और सी ++ घटकों और अनुप्रयोगों के एक सूट के साथ काम करता हूं जो निर्भरता-मैवेन के माध्यम से प्रबंधित होते हैं। "यदि यह कमांड लाइन के माध्यम से किया जा सकता है, तो इसे मैवेन में किया जा सकता है" का सामान्य नियम है, इसलिए हम सभी टुकड़ों को एक साथ खेलने के लिए बहुत सारे .bat, .exe और powerhell "गोंद" को समाप्त कर देते हैं।

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

मुझे यह भी पता चला है कि हमें निरंतर एकीकरण और निरंतर वितरण जैसी कुछ करने के लिए मेवेन के आसपास काम करना पड़ा है। हमारे प्रौद्योगिकी स्टैक का लगभग 70% सी # (शेष सी ++ है) है, और हम इसे डिफ़ॉल्ट रूप से नवीनतम और सबसे महान कोड के साथ हर रात क्यूए सर्वर पर तैनात करना चाहते हैं। स्नैपशॉट्स के माध्यम से रिलीज बिल्ड बनाम देव उत्पादकता के मूल्य को संतुलित करने के लिए, हमने एक निर्माण प्रक्रिया का निर्माण समाप्त कर दिया जहां हम हर रात हर घटक का रिलीज बिल्ड बनाते हैं, इसके बाद स्नैपशॉट बिल्ड करते हैं। इससे डेवलपर्स को सुबह में स्नैपशॉट का उपभोग करने के लिए पीओएम को बंपिंग करने की चिंता करने की ज़रूरत नहीं है। कुल मिलाकर, यह एक शाही दर्द है, कम से कम मजबूत निरंतर एकीकरण से आने वाले किसी के लिए, "सबकुछ बनाएं और तैनात करें" वातावरण।

Maven निर्भरता के प्रबंधन के लिए वादा का एक बहुत रखती है और परिवर्तन को तोड़ने अलग (विशेष रूप से इंटरफ़ेस घटकों में जहां उपभोक्ता और निर्माता सहमत होना होगा)। उन समस्याओं को अन्य तरीकों से हल किया गया है (svn externs, तैनाती बनाता है, इंटरफेस संस्करण प्रबंधन, आदि)। लेकिन यह किसी भी घटक को डाउनलोड करने के लिए अपेक्षाकृत अच्छा है, "एमवीएन संकलन" चलाएं, और कोड संकलन देखें (बिल्ड पोर्टेबिलिटी का मूल स्तर मानते हुए)। मेरे लिए, हालांकि, निर्माण के अधिकार के बारे में ओवरहेड और मेटा-वार्तालाप (ग्राहक मूल्य पर ध्यान केंद्रित करने के विरोध में) कुल मिलाकर मैवेन के मूल्य को कम करें।

0

प्लेक्सस-कंपाइलर-सीएसएसआरपी के साथ मेवेन-कंपाइलर-प्लगइन निम्न कॉन्फ़िगरेशन के साथ ठीक काम करता है। बेशक आपको "निष्पादन योग्य" पैरामीटर के साथ अपनी मशीन पर एक वास्तविक सी # कंपाइलर को इंगित करना होगा।

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.0</version> 
    <configuration> 
     <compilerId>csharp</compilerId> 
     <fork>true</fork> 
     <executable>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe</executable> 
     <outputFileName>myDLL</outputFileName> 
    </configuration> 
    <dependencies> 
     <dependency> 
      <groupId>org.codehaus.plexus</groupId> 
      <artifactId>plexus-compiler-csharp</artifactId> 
      <version>2.2</version> 
     </dependency> 
    </dependencies> 
</plugin> 
3

नेट कोर के लिए, आप dotnet-maven-plugin जो dotnet और nuget आदेशों ड्राइव, साथ ही जैसे के लिए समर्थन जोड़ता उपयोग कर सकते हैं "मेवेन वे" में सफाई, रिलीज इत्यादि।

<project> 
    [...] 
    <packaging>dotnet</packaging> 

    [...] 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.eobjects.build</groupId> 
     <artifactId>dotnet-maven-plugin</artifactId> 
     <version>0.11</version> 
     <extensions>true</extensions> 
     </plugin> 
    </plugins> 
    </build> 
    [...] 
</project> 

(सूचना डॉटनैट करने के लिए सेट पैकेजिंग प्रकार):

यहाँ एक उदाहरण प्लगइन विन्यास है।

यह तो project.json फ़ाइल से पढ़ने और डॉटनैट और nuget कमांड चलाने होगा इस तरह के, स्वच्छ संकलन, परीक्षण के रूप में Maven जीवन चक्र के चरणों के अनुसार, आदि

+0

एक उदाहरण के साथ मेरा उत्तर अपडेट किया स्थापित –

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