एक साधारण जावा परियोजना के लिए कौन सा विकल्प चुनना है


89

mvan archetype: जेनरेट बहुत सारे विकल्प प्रदान करता है और मैं जूनिट टेस्ट मामलों के साथ एक साधारण जावा उपयोगिता बनाना चाहता हूं। मैं यह जानना चाहूंगा कि मैं यहां कौन-सा शिलालेख इस्तेमाल कर रहा हूं?


मेरा सुझाव है कि आप मावेन गेटिंग स्टार्टेड गाइड पढ़ें । यह छोटा है और बहुत सारी जमीन को कवर करता है।
साहिल मुथू

जवाबों:


16

जब आप एक करते हैं mvn archetype:generate, तो एक डिफ़ॉल्ट चयन घुंघराले कोष्ठक को घेरने में प्रकट होता है (), उदाहरण के लिए (1274), यदि आप यह देखने के लिए स्क्रॉल करते हैं कि # 1274 क्या है, तो साधारण जावा प्रोजेक्ट्स करते समय, सामान्य रूप से प्रयास करने या शुरू करने के लिए यह डिफ़ॉल्ट रूप से जावा स्क्रिप्ट है। चयन करने के लिए सुरक्षित है।


वह डिफॉल्ट अब 333 है, 3 नहीं
टिमप

4
यह अब है380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
एसएलएफ

1
यह कहते हैं, उदाहरण के लिए, अर्थात, इसलिए इसका मतलब यह नहीं है कि डिफ़ॉल्ट चयन 3. है
ओह चिन बून

2
यह अब 644 है org.apache.maven.archetypes:maven-archetype-quickstart:1.1
एलोपी

अब यह 874 है:
मीकू

74

मैं दो आर्कटिक का उपयोग करता हूं। यह इस बात पर निर्भर करता है कि आप किस तरह का एप्लिकेशन बनाएंगे।

यदि आप एक वेब अनुप्रयोग चाहते हैं, तो maven-archetype-webapp का उपयोग करें , या यदि आप एक सरल अनुप्रयोग का उपयोग करना चाहते हैं maven-archetype-quickstart । वे उपयोगी हैं क्योंकि आप बिना किसी समस्या के उनका विस्तार कर पाएंगे।


1
ध्यान दें कि यह डिफ़ॉल्ट रूप से एक्लिप्स प्लगइन में है (कम से कम यह आज है)।
बेन

यहाँ मैं maven-archetype-webapp बनाने जा रहा हूँ और maven कैटलॉग डाउनलोड कर रहा हूँ लेकिन एक त्रुटि हो रही है।
मोगली

मुझे क्या करना चाहिए?
मोगली

19

मैं नीचे की तरह कमांड का उपयोग कर रहा हूं:

mvn archetype:generate -Dfilter=org.apache.maven.archetypes:

मुझे ग्रुपआईडी से केवल एक्टेट की एक छोटी सूचीorg.apache.maven.archetypes मिलेगी। शुरू करने के लिए अच्छा है maven-archetype-quickstartऔर maven-archetype-webappमेरे पूर्ववर्तियों ने कहा।



7

मुझे लगता है कि आपको उपयोग करना चाहिए maven-archetype-simple

संपादित करें

मावेन प्रलेखन के अनुसार :

  • maven-archetype-quickstart एक चापलूसी जिसमें एक नमूना मावेन परियोजना शामिल है।
  • maven-archetype-simple एक चापलूसी जिसमें एक सरल मावेन परियोजना शामिल है।

4
मैं maven-archetype-simpleअपने ग्रहण चयन में नहीं दिखता , लेकिन मैं देखता हूं maven-archetype-quickstart। क्या यह वही है?
हुहसिन

कृपया मेरे बाद के संपादन पर एक नज़र डालें जो मावेन प्रलेखन को संदर्भित करता है। प्लगइन ग्रहण करने के बारे में: मैं व्यक्तिगत pom.xmlरूप से मैन्युअल रूप से संपादित करना और कमांड प्रॉम्प्ट से कमांड लाइन चलाना पसंद करता हूं ।
एलेक्सर

6

मैं एक बहुत ही सरल pom.xml फ़ाइल के साथ शुरू करूँगा जिसमें केवल वही है जो आपको चाहिए। कुछ इस तरह

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-module</artifactId>
  <version>1</version>
</project>

से http://maven.apache.org/guides/introduction/introduction-to-the-pom.html


12
हालांकि इस सलाह में योग्यता हो सकती है, लेकिन यह सवाल का जवाब नहीं देता है। चापलूसी के पूरे बिंदु, जैसा कि मैं इसे समझता हूं, डेवलपर को इस तरह के बॉयलरप्लेट से बचाना है, और सर्वोत्तम प्रथाओं का पालन करना आसान है।
माइकल शेपर

3

आप प्रैक्टिकल डेवलपर से किसी भी मूल का उपयोग कर सकते हैं:

जावा 8 + आमतौर पर इस्तेमाल की जाने वाली टेस्ट लाइब्रेरी:

mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0

जावा 9 + आमतौर पर उपयोग किए जाने वाले परीक्षण पुस्तकालय

mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0 -Djava-version=9

इनमें JUnit 4, Mockito और AssertJ शामिल हैं, और यदि आप अपनी जार फ़ाइल को निष्पादन योग्य बनाना चाहते हैं, तो एक डिफ़ॉल्ट प्रकट फ़ाइल। अधिक जानकारी: https://thepracticaldeveloper.com/archetypes/

डिस्क्लेमर: मैं उस ब्लॉग का लेखक हूं।


मुझे मिलता है groupId, लेकिन इसके archetypeGroupIdलिए क्या है?
lupchiazoem

1
इसका उपयोग मावेन रिपॉजिटरी में एक साथ, के साथ मिलकर, प्रक्षेत्र का पता लगाने के लिए किया जाता है archetypeArtifactId
मोइसेस

0

maven-archetype-quickstart एक चापलूसी जिसमें एक नमूना मावेन परियोजना शामिल है। maven-archetype-simple एक आर्कफ़ाइट जिसमें एक सरल Maven प्रोजेक्ट होता है।

यदि त्रुटियों को ठीक किया जाता है तो इसे ग्रहण करने के लिए maven archetype कैटलॉग को जोड़कर। चरण नीचे दिए गए हैं:

खुली खिड़की> वरीयताएँ> मावेन> आर्केचेप्स

क्लिक करें Add Remote Catalogऔर निम्नलिखित जोड़ें:

सूची फ़ाइल: http://repo1.maven.org/maven2/archetype-catalog.xml

विवरण: मावेन सूची

नोट: इंटरनेट कनेक्शन आपके पहले MAVEN परियोजना के निर्माण की आवश्यकता है।


उपरोक्त कैटलॉग को डाउनलोड करना और मैन्युअल रूप से सेट करना लेकिन मेरे लिए काम नहीं किया।
मोगली

0

डिफ़ॉल्ट आर्किटाइप संख्या अब 1092 1092 है: दूरस्थ -> org.apache.maven.archetypes: maven-archetype-quickstart (एक आर्कएप्टाइप जिसमें एक नमूना मैवेन प्रोजेक्ट है।)


0

आप Java आर्केथाइप पर विचार करना चाह सकते हैं : इसमें JUnit परीक्षणों सहित सर्वोत्तम प्रथाओं का पालन करते हुए जल्दी से एक जावा परियोजना शुरू करने के लिए उचित चूक हैं। मैंने इसे एक आधुनिक उत्तराधिकारी के रूप में देखा maven-archetype-quickstart

उदाहरण: mvn archetype:generate -DarchetypeGroupId=io.github.oliviercailloux -DarchetypeArtifactId=java-archetype -DgroupId=mygroupid -DartifactId=myartifactid -DinteractiveMode=false

डिस्क्लेमर: मैं लेखक हूं।

विकल्पों के बारे में अधिक जानकारी के लिए, यहां उस प्रोजेक्ट की README का एक हिस्सा है (यह यहां कॉपी की गई तुलना में अधिक लिंक प्रदान करता है)।

आधिकारिक क्विकस्टार्ट आर्कटाइप

सरल जावा प्रोजेक्ट्स के लिए आधिकारिक आर्कएप्टाइप (अपाचे मैवेन गेटिंग स्टार्ट गाइड और अपाचे मैवेन कुकबुक द्वारा उल्लेखित) मेंवेन-आर्कटाइप-क्विकस्टार्ट, या org.apache.maven.arthhetypes: maven-archetype-quickstart है।

यह, IMHO, को पदावनत माना जाना चाहिए, क्योंकि यह कई कमजोरियों से ग्रस्त है।

  • एक महत्वपूर्ण समस्या यह है कि यह उन परियोजनाओं का निर्माण करता है जो JUnit 4 पर निर्भर करते हैं। वर्तमान संस्करण, JUnit 5, एक बेहतर एपीआई के बीच प्रदान करते हुए, काफी भिन्न है।
  • मामूली कमजोरियाँ: इसका डिफ़ॉल्ट संस्करण 1.0-स्नैपशॉट है, जिसे अनुशंसित और सामान्य योजना का पालन करने के लिए 1.0.0-SNAPSHOT होना चाहिए।
  • एक और मामूली कमजोरी: यह 1.7 JVM के लिए कॉन्फ़िगर की गई परियोजनाएं बनाता है। यह उपयुक्त हो सकता है यदि आपको विशेष रूप से पुरानी इंस्टॉलों का समर्थन करने की आवश्यकता है, लेकिन हालिया जेवीएम के लिए चयन करना नई परियोजनाओं के लिए अधिक उचित डिफ़ॉल्ट नियम है। उदाहरण के लिए, जावा 8 ने लैम्बडा एक्सप्रेशन पेश किए, जिन्हें आप शायद याद नहीं करना चाहते हैं।

मेरा पुरालेख डिफ़ॉल्ट रूप से लॉगिंग भी प्रदान करता है, जो मुझे लगता है कि उपयोगी है, sysout की तुलना में बेहतर है और चोट नहीं करता है, और अमरूद, जो मुझे लगता है कि जावा को उपयोगी रूप से समृद्ध करता है।

मावेन सेंट्रल में अन्य क्विकस्टार्ट आर्कटाइप्स

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

इंटरनेट पर एक सामान्य खोज ने मुझे प्रैक्टिकल डेवलपर तक पहुँचाया। जब उनसे संपर्क किया गया, तो उन्होंने मुझे (ई-मेल से) लिखा कि वह नियमित रूप से अपने कार्यक्षेत्र पर काम नहीं करते हैं और इसलिए इस तरह की परियोजना में सहयोग करना अस्वीकार करना पसंद करते हैं।

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

मैंने तब उनके पीओएम में पाए जाने वाले आर्किटेप्स विवरण के आधार पर मैन्युअल रूप से परिणामी सूची को फ़िल्टर्ड किया, और उनमें से कुछ होनहार आर्कटाइप्स के लिए (आधिकारिक वेबसाइट पर, आम तौर पर) एक और रूप दिया। केवल com.github.ngeor:archetype-quickstart-jdk8एक उपयुक्त उम्मीदवार होने का पता चला। लेकिन इसके लेखक ने मुझे लिखा है कि वह "इन दिनों कट्टरपंथ का अधिक उपयोग नहीं कर रहा है"।

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