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?
java
maven
maven-archetype
Jason
sumber
sumber
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.sumber
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.
sumber
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 adalahmaven-archetype-quickstart
danmaven-archetype-webapp
seperti yang dikatakan pendahulu saya.sumber
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
sumber
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.sumber
maven-archetype-simple
dalam pilihan Eclipse saya, tapi saya mengertimaven-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
sumber
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.
sumber
groupId
, tapi untuk apaarchetypeGroupId
?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:
CATATAN: KONEKSI INTERNET DIPERLUKAN SELAMA PEMBUATAN PROYEK MAVEN PERTAMA ANDA.
sumber
nomor arketipe default sekarang adalah 1092 1092: remote -> org.apache.maven.archetypes: maven-archetype-quickstart (Sebuah arketipe yang berisi contoh proyek Maven.)
sumber
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".sumber