Membuat Proyek Java EE dengan Maven

13

Saya telah mengembangkan aplikasi web Java EE dengan Eclipse selama sekitar satu tahun. Majikan saya tidak menggunakan Maven, tetapi semakin saya membaca tentangnya, semakin yakin saya bahwa Maven + Hudson akan sangat bermanfaat bagi kita. Namun, pertama-tama, saya harus merasa nyaman dengan teknologi itu di waktu senggang saya, sehingga saya dapat membuat konsep bukti.

Saat ini, saya masih seorang pemula Maven. Apakah ada serangkaian praktik terbaik untuk membuat aplikasi web Java EE dengan Maven? Misalnya, saya bisa membuat proyek dengan pola dasar dan kemudian menambahkan semua JAR yang diperlukan dengan meletakkan dependensi dalam POM untuk wadah servlet, EJB, EclipseLink, dll ... Itu mungkin berhasil, tetapi mungkin bukan yang terbaik cara untuk melakukannya. Saya sangat menghargai panduan apa pun yang dapat Anda berikan tentang topik ini.

Michael
sumber

Jawaban:

10

Jangan repot dengan arketipe sampai nanti

Untuk semua informasi yang perlu Anda ketahui tentang Maven, baca beberapa buku di situs web mereka . Namun, itu sedikit berlebihan untuk apa yang ingin Anda capai.

Untuk memulai, lay out aplikasi web Anda mengikuti struktur Maven standar untuk aplikasi web sebagai berikut. (Anda tidak memerlukan arketipe Maven untuk ini, hanya sekelompok folder standar, Anda dapat membuatnya dalam 2 menit).

  • src/main/java - berisi kode Java produksi Anda
  • src/main/resources - berisi sumber daya classpath produksi Anda (misalnya konteks Spring)
  • src/main/webapp - (mengandung WEB-INF / web.xml tetapi tidak ada folder lib)
  • src/test/java - berisi kode Java uji Anda
  • src/test/resources - berisi sumber daya pengujian Anda (misalnya, umpan XML untuk pengujian layanan web, dll.)

Plugin dasar

Langkah selanjutnya adalah memilih sekelompok plugin. Tersangka yang biasa adalah, jelas yang mendukung bersih, kompilasi, dan sumber daya (datang sebagai bagian dari Maven tetapi Anda dapat mengonfigurasinya). Kemudian Anda akan memiliki tester unit pasti dan plugin PERANG. Itu cukup untuk membuat aplikasi web yang sangat mendasar.

Plugin yang lebih maju

Langkah selanjutnya adalah memperkenalkan Findbugs dan plugin PMD yang akan memberikan kode Anda menyeluruh dan melaporkan berbagai masalah potensial. Anda mungkin ingin memiliki JXR untuk kode sumber referensi silang, taglist untuk melacak TODO dan tag REFACTOR dan sebagainya. Diatas segalanya...

... Gunakan plugin Jetty untuk aplikasi web

Gunakan plugin Jetty untuk menjalankan file PERANG dalam IDE Anda untuk memudahkan debugging. Cepat dan kecil dan menyelesaikan pekerjaan dengan sangat cepat. Memiliki Jetty sebagai bagian dari build Maven Anda membuat proyek Anda dapat diuji pada mesin apa pun tanpa memerlukan IDE dengan beberapa panel Server kompleks yang dikonfigurasi. Ini juga memungkinkan Anda untuk mendeklarasikan dependensi pada file WAR lainnya yang pada gilirannya berarti Anda dapat menghasilkan lingkungan kerja yang lengkap yang terdiri dari beberapa aplikasi web semua dengan satu perintah "mvn clean jetty: run". Ini bekerja di mana saja, dan Anda bahkan dapat memberikan tes konfigurasi JNDI sehingga sumber data Spring-injected Anda semua dikonfigurasikan secara eksternal. Jika Anda menggabungkan pendekatan Jetty ini dengan halaman HTML demonstrasi standar (src/test/resources/demo.html) Anda akan menghemat banyak waktu pengembang untuk mendapatkan lingkungan lokal yang berfungsi. Satu perintah dan Anda selesai. Sederhana.

Mengkonfigurasi IDE Anda

Dengan Maven itu mudah karena semua cowok besar mendukungnya: Eclipse, Netbeans dan, tentu saja Intellij favorit pribadi saya. Arahkan saja IDE Anda di pom.xml dan itu akan menangani semua dependensi yang terdaftar untuk Anda. Tidak ada lagi mucking tentang WEB-INF/lib. Di Eclipse, Anda biasanya menggunakan File | Impor ... | Proyek Maven | pom.xml.

Integrasi dengan Hudson

Pertama instal Hudson (ini hanya webapp) dan kemudian targetkan sistem kontrol versi Anda sehingga memeriksa versi yang sesuai. Langkah terakhir Anda adalah mengkonfigurasinya sehingga menggunakan Maven untuk melakukan build. Jelas Maven harus diinstal pada mesin build Anda (dengan asumsi itu berbeda dari mesin pengembangan Anda).

Hudson hanya membuat snapshot

Suruh Hudson melakukan build snapshot, dan tinggalkan build rilis untuk proses manual. Menggunakan pendekatan itu akan berarti bahwa pengembang dapat membagikan kodenya di bawah revisi snapshot (mis. 1.0.0-SNAPSHOT) dan hanya jika ia dapat melewati build maka akan dibagikan ke repositori tim. Biasanya, Hudson akan mengeksekusi "mvn clean deploy" walaupun menyertakan tujuan "site" juga dapat menjadi bagian dari proses Anda karena itu akan membuat situs web proyek kecil untuk setiap bangunan. Pengembang di tim akan memiliki bangunan snapshot yang diperbarui secara otomatis dimasukkan ke dalam proyek mereka melalui proses manajemen ketergantungan Maven.

Hudson menyediakan banyak plugin yang dapat mendukung semua metrik. Favorit pribadi saya adalah untuk melacak jumlah tes yang lulus per proyek dari waktu ke waktu. Sangat bagus untuk menunjukkan kepada manajemen bahwa jumlah dan cakupan tes unit Anda semakin meningkat.

Panduan pengaturan umum

Bagi repositori Anda ke dalam setidaknya struktur berikut:

  • team-release - Semua artefak produksi yang dirilis pergi ke sini
  • team-snapshot - Semua artefak pengembangan snapshot Anda buka di sini
  • rilis pihak ketiga - Semua perpustakaan pihak ketiga pendukung Anda buka di sini (mis. Musim Semi, Hibernasi, dll.)

Akun pengguna pengembang seharusnya tidak dapat menulis ke repositori tim, baik snapshot atau rilis. Ini akan memungkinkan pengembang untuk memotong Hudson jika mereka sedang terburu-buru dan dengan cepat akan menjadi norma.

Pastikan Anda selalu mengunduh sumber, javadocs, dan tanda tangan SHA untuk semua pihak ketiga Anda. Jarvana adalah penjelajah repositori yang sangat baik untuk semua kelas yang sulit ditemukan.

Pertimbangkan untuk menginstal manajer repositori seperti Nexus atau Artifactory untuk memungkinkan kontrol yang lebih baik atas repositori Anda yang terus bertambah.

Gary Rowe
sumber
2
Sonar juga cukup luar biasa dan sangat cocok dengan pakar / Hudson
Kevin
1
Benar. Saat ini, jika saya sedang mengerjakan proyek Maven dalam sebuah tim, saya berharap Findbugs / PMD lokal menangkap masalah pembunuh dengan cepat, kemudian pekerjaan Sonar setelah Jenkins membangun dengan penyebaran artefak ke Nexus atau Artifactory. Ini memberikan lokasi artefak yang mudah, dan memberikan analisis dampak ("jika digunakan") untuk artefak tersebut di seluruh ekosistem proyek. Ditambah dengan git, JIRA dan Fisheye Anda memiliki proses pengembangan yang luar biasa tersedia untuk Anda.
Gary Rowe
1
Gary, tautan pdf kedaluwarsa
user1787812
1

Maven menyediakan banyak arketipe

mvn archetype:generate

akan mencetak daftar yang tersedia.

Perbedaan utama antara arketipe Java biasa dengan arketipe J2EE adalah direktori untuk jsp dan gambar akan dihasilkan. Jika Anda memulai proyek J2EE baru, pertimbangkan untuk menggunakan salah satunya dari awal.

Seiring pertumbuhan proyek Anda, Anda dapat menambahkan lebih banyak dependensi. Secara pribadi saya lebih suka memulai dengan koleksi minimal dependensi (misalnya pola dasar dasar J2EE) dan kemudian secara bertahap menambahkan apa yang saya butuhkan.

andreasmk2
sumber
0

Saya sudah melakukannya dengan mulai dari arketipe dasar dan menambahkan semua bit, dan saya cukup yakin bahwa itu bukan cara yang sangat baik. Tapi saya juga merasa canggung; memilih apa yang merupakan pola dasar yang baik adalah sulit kecuali Anda sudah "sangat berpengalaman dalam rahasia". Itu semua agak terlalu banyak seperti pengetahuan sihir (sebagai lawan informasi teknis yang masuk akal) untuk selera saya ...

Donal Fellows
sumber
Dan saya pikir itu pertanyaan yang bagus. Seandainya aku punya jawaban yang lebih baik.
Donal Fellows
Ini sangat dihargai, tuan.
Michael
0

Maven menyediakan cara untuk membuat proyek dari template yang disebut Pola Dasar . Anda menggunakan perintah mvn archetype:generateuntuk memilih satu secara interaktif . Anda juga dapat menentukan satu secara langsung.

mvn archetype:generate \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-j2ee-simple \
    -DarchetypeVersion=1.0

Semua dalam satu baris.


sumber
0

Saya telah menggunakan Maven dan Hudson tiga bulan terakhir. Ini membantu saya untuk memeriksa kesehatan basis kode secara berkala dengan menjalankan semua pengujian unit, menghasilkan laporan pengujian. Anda bisa mencoba ini.
Anda juga dapat mencoba Spring Roo. Ini adalah alat RAD untuk membuat proyek J2EE berbasis Spring.

haylem
sumber