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?
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?
Jawaban:
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.
380: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
org.apache.maven.archetypes:maven-archetype-quickstart:1.1
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.
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.archetypes
groupId. Yang baik untuk memulai adalah maven-archetype-quickstart
dan maven-archetype-webapp
seperti yang dikatakan pendahulu saya.
mvn archetype:generate -DgroupId=com.example -DartifactId=foobar -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
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.maven-archetype-simple
dalam pilihan Eclipse saya, tapi saya mengerti maven-archetype-quickstart
. Apakah mereka sama?
pom.xml
secara manual dan menjalankan command line dari command prompt.
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
Anda dapat menggunakan salah satu yang dasar dari Pengembang Praktis:
mvn archetype:generate -DgroupId=[your-project-groupId] -DartifactId=[your-project-name] -DarchetypeGroupId=com.thepracticaldeveloper -DarchetypeArtifactId=archetype-java-basic-tpd -DarchetypeVersion=1.0.0
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.
groupId
, tapi untuk apa archetypeGroupId
?
archetypeArtifactId
.
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 Catalog
dan 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.
nomor arketipe default sekarang adalah 1092 1092: remote -> org.apache.maven.archetypes: maven-archetype-quickstart (Sebuah arketipe yang berisi contoh proyek Maven.)
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.
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-jdk8
diturunkan menjadi kandidat yang cocok. Tetapi penulisnya menulis kepada saya bahwa dia "tidak terlalu banyak menggunakan / mempertahankan pola dasar akhir-akhir ini".