Pola dasar apa yang harus dipilih untuk proyek java sederhana

90

mvn archetype: generate menyediakan terlalu banyak opsi dan saya ingin membuat utilitas java sederhana dengan kasus uji junit. Saya ingin tahu pola dasar apa yang harus saya gunakan di sini?

Jason
sumber
Saya menyarankan Anda membaca Panduan Memulai Maven . Itu pendek dan mencakup banyak hal.
Sahil Muthoo

Jawaban:

16

Saat Anda melakukan mvn archetype:generate, pilihan default muncul di kurung kurawal yang dilampirkan (), misalnya (1274), jika Anda menggulir ke atas untuk melihat # 1274, biasanya itu adalah arketipe Java default untuk dicoba atau dimulai, jika melakukan proyek Java sederhana, begitu juga aman untuk dipilih.

Oh Chin Boon
sumber
defaultnya sekarang 333, bukan 3
TimP
4
sekarang380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
slf
1
Dikatakan misalnya, bukan yaitu, jadi ini menyiratkan bahwa pilihan default adalah 3.
Oh Chin Boon
2
Sekarang 644 org.apache.maven.archetypes:maven-archetype-quickstart:1.1
aliopi
Sekarang 874 :)
miku
74

Saya menggunakan dua arketipe. Itu tergantung pada jenis aplikasi apa yang akan Anda buat.

Jika Anda menginginkan aplikasi web, gunakan maven-archetype-webapp , atau jika Anda ingin aplikasi sederhana gunakan maven-archetype-quickstart . Mereka berguna karena Anda akan dapat mengembangkannya tanpa masalah.

Oleksandr
sumber
1
Perhatikan bahwa ini ada di plugin Eclipse secara default (setidaknya sekarang).
Ben
disini saya akan membuat maven-archetype-webapp dan mendownload katalog maven tetapi mendapatkan error.
Mowgli
apa yang harus saya lakukan?
Mowgli
19

Saya menggunakan perintah seperti di bawah ini:

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

Saya akan mendapatkan daftar pendek achetypes hanya dari org.apache.maven.archetypesgroupId. Yang baik untuk memulai adalah maven-archetype-quickstartdan maven-archetype-webappseperti yang dikatakan pendahulu saya.

marioosh
sumber
8

Inilah yang Anda butuhkan

 mvn archetype:generate -DgroupId=com.example -DartifactId=foobar -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Referensi: Build Run Run Java Maven Project Command Line

Tukang sortir
sumber
7

Saya pikir Anda harus menggunakan maven-archetype-simple

EDIT

Menurut dokumentasi maven :

  • maven-archetype-quickstart Pola dasar yang berisi contoh proyek Maven.
  • maven-archetype-simple Pola dasar yang berisi proyek Maven sederhana.
AlexR
sumber
4
Saya tidak melihat maven-archetype-simpledalam pilihan Eclipse saya, tapi saya mengerti maven-archetype-quickstart. Apakah mereka sama?
huahsin68
Silakan lihat hasil edit saya selanjutnya yang mengacu pada dokumentasi maven. Mengenai plugin eclipse: Saya pribadi lebih suka mengedit pom.xmlsecara manual dan menjalankan command line dari command prompt.
AlexR
6

Saya akan mulai dengan file pom.xml yang sangat sederhana yang hanya memiliki apa yang Anda butuhkan. Sesuatu seperti

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

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

Peter Lawrey
sumber
12
Meskipun nasihat ini mungkin bermanfaat, itu tidak menjawab pertanyaan itu. Inti dari arketipe, seperti yang saya mengerti, adalah untuk menyelamatkan pengembang dari jenis boilerplate ini, dan membuatnya mudah untuk mengikuti praktik terbaik.
Michael Scheper
3

Anda dapat menggunakan salah satu yang dasar dari Pengembang Praktis:

Pustaka pengujian Java 8 + yang umum digunakan:

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 + pustaka pengujian yang umum digunakan

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

Mereka termasuk JUnit 4, Mockito dan AssertJ, dan file manifes default jika Anda ingin file jar Anda dapat dieksekusi. Info lebih lanjut: https://thepracticaldeveloper.com/archetypes/

Penafian: Saya adalah penulis blog itu.

Moisés
sumber
Saya mengerti groupId, tapi untuk apa archetypeGroupId?
lupchiazoem
1
Ini digunakan untuk menemukan arketipe di repositori Maven, bersama dengan archetypeArtifactId.
Moisés
0

maven-archetype-quickstart Pola dasar yang berisi contoh proyek Maven. maven-archetype-simple Sebuah arketipe yang berisi proyek Maven sederhana.

jika mendapatkan kesalahan, perbaiki dengan menambahkan katalog arketipe maven ke eclipse. Langkah-langkahnya disediakan di bawah ini:

Buka Window> Preferences> Maven> Archetypes

Klik Add Remote Catalogdan tambahkan yang berikut ini:

File Katalog: http://repo1.maven.org/maven2/archetype-catalog.xml

Deskripsi: katalog maven

CATATAN: KONEKSI INTERNET DIPERLUKAN SELAMA PEMBUATAN PROYEK MAVEN PERTAMA ANDA.

Biswajit Sahu
sumber
mengunduh katalog di atas dan mengaturnya secara manual tetapi tidak berhasil untuk saya.
Mowgli
0

nomor arketipe default sekarang adalah 1092 1092: remote -> org.apache.maven.archetypes: maven-archetype-quickstart (Sebuah arketipe yang berisi contoh proyek Maven.)

Prateek Kushwaha
sumber
0

Anda mungkin ingin mempertimbangkan Java Archetype : ini memiliki default yang masuk akal untuk memulai proyek Java dengan cepat mengikuti praktik terbaik, termasuk pengujian JUnit. Saya membayangkannya sebagai penerus modern maven-archetype-quickstart.

Contoh: mvn archetype:generate -DarchetypeGroupId=io.github.oliviercailloux -DarchetypeArtifactId=java-archetype -DgroupId=mygroupid -DartifactId=myartifactid -DinteractiveMode=false.

Penafian: Saya adalah penulisnya.

Untuk informasi lebih lanjut tentang alternatif, berikut adalah bagian dari README proyek itu (menyediakan lebih banyak tautan daripada disalin di sini).

Pola dasar quickstart resmi

Pola dasar resmi (disebutkan oleh Apache's Maven Getting Started Guide dan oleh Apache Maven Cookbook) untuk proyek Java sederhana adalah maven-archetype-quickstart, atau org.apache.maven.archetypes: maven-archetype-quickstart secara lengkap.

Seharusnya, IMHO, dianggap usang, karena menderita beberapa kelemahan.

  • Masalah penting adalah bahwa ia membuat proyek yang bergantung pada JUnit 4. Versi saat ini, JUnit 5, sangat berbeda, menyediakan antara lain API yang ditingkatkan.
  • Kelemahan kecil: versi defaultnya adalah 1.0-SNAPSHOT, yang seharusnya adalah 1.0.0-SNAPSHOT untuk mengikuti skema yang disarankan dan biasa.
  • Kelemahan kecil lainnya: ini membuat proyek dikonfigurasi untuk 1.7 JVM. Ini mungkin sesuai jika Anda secara khusus perlu mendukung penginstalan lama, tetapi memilih JVM yang cukup baru adalah aturan default yang lebih masuk akal untuk project baru. Misalnya, Java 8 memperkenalkan ekspresi lambda, yang mungkin tidak ingin Anda lewatkan.

Pola dasar saya juga menyediakan logging secara default, yang menurut saya berguna, berskala lebih baik daripada sysout dan tidak merugikan, dan Guava, yang menurut saya berguna untuk memperkaya Java.

Pola dasar quickstart lainnya di Maven Central

Untuk bergabung dalam upaya jika memungkinkan dan menghindari duplikasi yang sia-sia, saya secara aktif mencari arketipe lain yang akan memiliki tujuan yang sama dengan milik saya: menyediakan arketipe sederhana dengan default yang masuk akal untuk dengan mudah memulai proyek Java modern. (Ini sebagian besar dilakukan sekitar Juni 2020.)

Pencarian umum di internet membawa saya ke The Practical Developer. Ketika dihubungi, dia menulis kepada saya (melalui email) bahwa dia tidak mengerjakan arketipe secara teratur dan oleh karena itu lebih suka menolak untuk berkolaborasi dalam proyek semacam itu.

Karena pencarian di internet tidak mengungkapkan hasil berguna lainnya, dan karena saya tidak menemukan alat pencarian khusus yang sesuai dengan kebutuhan saya, saya menerapkan peramban arketipe sederhana. Ini mencantumkan semua arketipe yang tersedia di Maven Central. Ada terlalu banyak untuk ditinjau secara manual, oleh karena itu, saya memilih mereka yang groupId dan artifactIdnya ada setidaknya sejak tiga tahun dan telah diperbarui selama setahun terakhir, dengan harapan menemukan proyek yang dipertahankan dalam jangka panjang, yang saya kira menunjukkan lebih mungkin proyek berkualitas baik. (Tentu saja filter ini mungkin melewatkan arketipe berkualitas baik yang sangat cocok dengan tujuan yang dinyatakan; Saya tidak tahu. Sebagai contoh, arketipe ini tidak lolos filter itu karena saya telah mengubah artifactIdnya dari waktu ke waktu.)

Saya kemudian menyaring secara manual daftar yang dihasilkan berdasarkan deskripsi arketipe yang ditemukan di POM mereka, dan memberikan pandangan lebih lanjut (di situs web resmi, biasanya) untuk beberapa arketipe yang menjanjikan di antara mereka. Hanya com.github.ngeor:archetype-quickstart-jdk8diturunkan menjadi kandidat yang cocok. Tetapi penulisnya menulis kepada saya bahwa dia "tidak terlalu banyak menggunakan / mempertahankan pola dasar akhir-akhir ini".

Olivier Cailloux
sumber