ประเภทใดที่ควรเลือกสำหรับโปรเจ็กต์ Java แบบง่าย


90

mvn archetype: สร้างมีตัวเลือกมากเกินไปและฉันกำลังมองหาการสร้างยูทิลิตี้ java อย่างง่ายพร้อมกรณีทดสอบ junit ฉันต้องการทราบว่าฉันควรใช้แม่แบบใดที่นี่?


ผมขอแนะนำให้คุณอ่านMaven คู่มือการเริ่มต้น มันสั้นและครอบคลุมพื้นดินมาก
Sahil Muthoo

คำตอบ:


16

เมื่อคุณทำ a mvn archetype:generateการเลือกเริ่มต้นจะปรากฏในวงเล็บปีกกา()เช่น(1274)หากคุณเลื่อนขึ้นเพื่อดูว่า # 1274 คืออะไรโดยปกติจะเป็นแม่แบบ Java เริ่มต้นที่จะลองใช้หรือเริ่มต้นหากทำโครงการ Java แบบธรรมดาก็คือ ปลอดภัยในการเลือก


ค่าเริ่มต้นตอนนี้คือ 333 ไม่ใช่ 3
TimP

4
ตอนนี้380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
slf

1
มันบอกว่าเช่นไม่ใช่นั่นหมายความว่าการเลือกเริ่มต้นคือ 3
Oh Chin Boon

2
ตอนนี้เป็น 644 org.apache.maven.archetypes:maven-archetype-quickstart:1.1
aliopi

ตอนนี้เป็น 874 :)
miku

74

ฉันใช้สองต้นแบบ ขึ้นอยู่กับว่าคุณจะสร้างแอปพลิเคชันประเภทใด

หากคุณต้องการโปรแกรมเว็บใช้Maven-แม่-webappหรือถ้าคุณต้องการใช้งานโปรแกรมที่ง่ายMaven-แม่-QuickStart มีประโยชน์เพราะคุณจะสามารถขยายได้โดยไม่มีปัญหา


1
โปรดทราบว่าสิ่งนี้อยู่ในปลั๊กอิน Eclipse โดยค่าเริ่มต้น (อย่างน้อยก็คือวันนี้)
เบ็น

ที่นี่ฉันจะสร้าง maven-archetype-webapp และดาวน์โหลดแคตตาล็อก maven แต่ได้รับข้อผิดพลาด
Mowgli

ฉันควรทำอย่างไรดี?
Mowgli

19

ฉันใช้คำสั่งดังต่อไปนี้:

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

ฉันจะได้รับรายชื่อของ achetypes เฉพาะจากorg.apache.maven.archetypesgroupID สิ่งที่ดีสำหรับการเริ่มต้นคือmaven-archetype-quickstartและmaven-archetype-webappเหมือนที่รุ่นก่อนของฉันพูด



7

ฉันคิดว่าคุณควรใช้ maven-archetype-simple

แก้ไข

ตามเอกสารของ maven :

  • maven-archetype-quickstart แม่แบบที่มีโครงการ Maven ตัวอย่าง
  • maven-archetype-simple แม่แบบที่มีโครงการ Maven อย่างง่าย

4
ฉันไม่เห็นmaven-archetype-simpleในการเลือกคราสของฉัน maven-archetype-quickstartแต่ฉันเห็น พวกเดียวกันหรือเปล่า?
huahsin68

โปรดดูการแก้ไขในภายหลังของฉันที่อ้างถึงเอกสาร maven เกี่ยวกับปลั๊กอิน eclipse: โดยส่วนตัวแล้วฉันชอบที่จะแก้ไขpom.xmlด้วยตนเองและเรียกใช้บรรทัดคำสั่งจากพรอมต์คำสั่ง
AlexR

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
แม้ว่าคำแนะนำนี้อาจมีประโยชน์ แต่ก็ไม่ได้ตอบคำถาม ตามที่ฉันเข้าใจจุดรวมของต้นแบบคือการช่วยนักพัฒนาซอฟต์แวร์จากต้นแบบประเภทนี้และทำให้ง่ายต่อการปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุด
Michael Scheper

3

คุณสามารถใช้สิ่งพื้นฐานใดก็ได้จาก The Practical Developer:

ไลบรารีทดสอบ Java 8 + ที่ใช้กันทั่วไป:

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

Java 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 และไฟล์รายการเริ่มต้นในกรณีที่คุณต้องการให้ไฟล์ jar ของคุณสามารถเรียกใช้งานได้ ข้อมูลเพิ่มเติม: https://thepracticaldeveloper.com/archetypes/

Disclaimer: ฉันเป็นผู้เขียนบล็อกนั้น


ฉันได้รับgroupIdแต่มีarchetypeGroupIdไว้เพื่ออะไร?
lupchiazoem

1
มันถูกใช้เพื่อค้นหาแม่แบบในที่เก็บ Maven พร้อมกับไฟล์archetypeArtifactId.
Moisés

0

maven-archetype-quickstart แม่แบบที่มีโครงการ Maven ตัวอย่าง maven-archetype-simple แม่แบบที่มีโครงการ Maven อย่างง่าย

หากได้รับข้อผิดพลาดได้รับการแก้ไขโดยการเพิ่มแค็ตตาล็อก maven archetype ไปยัง eclipse ขั้นตอนมีให้ด้านล่าง:

เปิดหน้าต่าง> การตั้งค่า> Maven> Archetypes

คลิกAdd Remote Catalogและเพิ่มสิ่งต่อไปนี้:

ไฟล์แคตตาล็อก: http://repo1.maven.org/maven2/archetype-catalog.xml

คำอธิบาย: แคตตาล็อก maven

หมายเหตุ: จำเป็นต้องมีการเชื่อมต่ออินเทอร์เน็ตในระหว่างการสร้างโครงการ MAVEN แรกของคุณ


ดาวน์โหลดแคตตาล็อกด้านบนและตั้งค่าด้วยตนเอง แต่ไม่ได้ผลสำหรับฉัน
Mowgli


0

คุณอาจต้องการพิจารณาJava Archetype : มีค่าเริ่มต้นที่สมเหตุสมผลสำหรับการเริ่มต้นโปรเจ็กต์ Java อย่างรวดเร็วตามแนวทางปฏิบัติที่ดีที่สุดรวมถึงการทดสอบ JUnit maven-archetype-quickstartฉันคิดว่ามันเป็นทายาทที่ทันสมัยของ

ตัวอย่าง: mvn archetype:generate -DarchetypeGroupId=io.github.oliviercailloux -DarchetypeArtifactId=java-archetype -DgroupId=mygroupid -DartifactId=myartifactid -DinteractiveMode=false.

Disclaimer: ฉันเป็นผู้เขียน

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับทางเลือกต่อไปนี้เป็นส่วนหนึ่งของREADME ของโครงการนั้น (มีลิงก์มากกว่าที่คัดลอกที่นี่)

แม่แบบการเริ่มต้นอย่างรวดเร็วอย่างเป็นทางการ

แม่แบบอย่างเป็นทางการ (กล่าวถึงโดยคู่มือการเริ่มต้นใช้งาน Maven ของ Apache และ Apache Maven Cookbook) สำหรับโปรเจ็กต์ Java ง่ายๆคือ maven-archetype-quickstart หรือ org.apache.maven.archetypes: maven-archetype-quickstart แบบเต็ม

IMHO ควรได้รับการพิจารณาให้เลิกใช้เนื่องจากมีจุดอ่อนหลายประการ

  • ปัญหาที่สำคัญคือการสร้างโปรเจ็กต์ที่ขึ้นอยู่กับ JUnit 4 เวอร์ชันปัจจุบัน JUnit 5 นั้นแตกต่างกันอย่างมากโดยมี API ที่ปรับปรุงแล้ว
  • จุดอ่อนเล็กน้อย: เวอร์ชันเริ่มต้นคือ 1.0-SNAPSHOT ซึ่งควรเป็น 1.0.0-SNAPSHOT เพื่อให้เป็นไปตามรูปแบบที่แนะนำและปกติ
  • จุดอ่อนเล็กน้อยอีกประการหนึ่ง: สร้างโครงการที่กำหนดค่าสำหรับ 1.7 JVM สิ่งนี้อาจเหมาะสมหากคุณต้องการสนับสนุนการติดตั้งแบบเก่าโดยเฉพาะ แต่การเลือกใช้ JVM ล่าสุดเป็นกฎเริ่มต้นที่สมเหตุสมผลกว่าสำหรับโครงการใหม่ ตัวอย่างเช่น Java 8 นำเสนอนิพจน์แลมบ์ดาซึ่งคุณอาจไม่อยากพลาด

แม่แบบของฉันยังให้การบันทึกตามค่าเริ่มต้นซึ่งฉันคิดว่ามีประโยชน์ปรับขนาดได้ดีกว่า sysout และไม่เจ็บและ Guava ซึ่งฉันคิดว่าเพิ่มประโยชน์ให้กับ Java

รูปแบบการเริ่มต้นอย่างรวดเร็วอื่น ๆ ใน Maven Central

เพื่อที่จะเข้าร่วมความพยายามหากเป็นไปได้และหลีกเลี่ยงการทำซ้ำที่สิ้นเปลืองฉันจึงค้นหาต้นแบบอื่น ๆ ที่จะมีจุดมุ่งหมายเดียวกันกับของฉัน: จัดเตรียมแม่แบบที่เรียบง่ายพร้อมค่าเริ่มต้นที่สมเหตุสมผลเพื่อเริ่มโครงการ Java ที่ทันสมัยได้อย่างง่ายดาย (ส่วนใหญ่ทำประมาณเดือนมิถุนายน 2020)

การค้นหาทั่วไปบนอินเทอร์เน็ตทำให้ฉันไปสู่ ​​The Practical Developer เมื่อได้รับการติดต่อเขาเขียนถึงฉัน (ทางอีเมล) ว่าเขาไม่ได้ทำงานกับแม่แบบของเขาเป็นประจำดังนั้นจึงต้องการปฏิเสธการทำงานร่วมกันในโครงการดังกล่าว

เนื่องจากการค้นหาบนอินเทอร์เน็ตไม่ได้เปิดเผยผลลัพธ์ที่เป็นประโยชน์อื่น ๆ และเนื่องจากฉันไม่พบเครื่องมือค้นหาเฉพาะที่เหมาะกับความต้องการของฉันฉันจึงใช้เบราว์เซอร์ต้นแบบที่เรียบง่าย มันแสดงรายการต้นแบบทั้งหมดที่มีอยู่ใน Maven Central มีจำนวนมากเกินไปที่จะตรวจสอบด้วยตนเองดังนั้นฉันจึงเลือกผู้ที่มี groupId และ artifactId ตั้งแต่อย่างน้อยสามปีและได้รับการอัปเดตในช่วงปีที่แล้วด้วยความหวังว่าจะพบโครงการที่ได้รับการดูแลในระยะยาวซึ่งฉันคิดว่าบ่งชี้ว่า น่าจะเป็นโครงการคุณภาพดี (แน่นอนว่าตัวกรองนี้อาจพลาดต้นแบบคุณภาพดีที่ตรงกับเป้าหมายที่ระบุไว้อย่างสมบูรณ์ฉันไม่มีทางรู้ในกรณีนี้แม่แบบนี้ไม่ผ่านตัวกรองนั้นเนื่องจากฉันได้เปลี่ยน artifactId เมื่อเวลาผ่านไป)

จากนั้นฉันก็กรองรายการผลลัพธ์ด้วยตนเองตามคำอธิบายต้นแบบที่พบใน POM ของพวกเขาและให้ดูเพิ่มเติม (ในเว็บไซต์อย่างเป็นทางการโดยทั่วไป) สำหรับต้นแบบที่มีแนวโน้มสองสามรายการ com.github.ngeor:archetype-quickstart-jdk8เปิดเผยเพียงว่าเป็นผู้สมัครที่เหมาะสมเท่านั้น แต่ผู้เขียนเขียนถึงฉันว่าเขา“ ไม่ได้ใช้ / ดูแลต้นแบบมากนักในทุกวันนี้”

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.