Pasang balang tempatan dengan Maven

1. Masalah dan Pilihannya

Maven adalah alat yang sangat serba boleh dan repositori awam yang ada tiada duanya. Walau bagaimanapun, akan selalu ada artifak yang tidak dihoskan di mana saja , atau repositori tempat ia dihoskan berisiko bergantung, kerana mungkin tidak sampai bila anda memerlukannya.

Apabila itu berlaku, terdapat beberapa pilihan:

  • gigit peluru dan pasang penyelesaian pengurusan repositori lengkap seperti Nexus
  • cuba muat turun artifak ke salah satu repositori awam yang lebih terkenal
  • pasang artifak secara tempatan menggunakan plugin maven

Tentu saja Nexus adalah penyelesaian yang lebih matang, tetapi juga lebih kompleks . Menyediakan contoh untuk menjalankan Nexus, menyiapkan Nexus itu sendiri, mengkonfigurasi dan memeliharanya mungkin berlebihan untuk masalah sederhana seperti menggunakan satu jar. Sekiranya senario ini - hosting artifak tersuai - adalah perkara biasa, pengurus repositori masuk akal.

Mendapatkan artifak itu dimuat naik ke repositori awam atau di pusat Maven secara langsung juga merupakan penyelesaian yang baik, tetapi biasanya ia panjang. Selain itu, perpustakaan mungkin tidak diaktifkan Maven sama sekali, yang menjadikan prosesnya lebih sukar, jadi ini bukan penyelesaian yang realistik untuk dapat menggunakan artifak SEKARANG.

Itu meninggalkan pilihan ketiga - menambahkan artifak dalam kawalan sumber dan menggunakan plugin maven - dalam kes ini, maven-install-plugin untuk memasangnya secara tempatan sebelum proses membina memerlukannya . Sejauh ini, ini adalah pilihan yang paling mudah dan boleh dipercayai.

2. Pasang Local Jar Dengan plugin m aven-install

Mari mulakan dengan konfigurasi penuh yang diperlukan untuk memasang artifak ke repositori tempatan kami:

 org.apache.maven.plugins maven-install-plugin 2.5.1  org.somegroup someartifact 1.0 jar ${basedir}/dependencies/someartifact-1.0.jar true    install-jar-lib  install-file  validate   

Sekarang, mari kita pecahkan dan menganalisis perincian konfigurasi ini.

2.1. Maklumat Artifak

Maklumat Artifak ditakrifkan sebagai sebahagian daripada unsur. Sintaks sebenar adalah hampir sama dengan mengisytiharkan pergantungan - a groupId , artifactId dan versi unsur-unsur.

Bahagian konfigurasi seterusnya memerlukan menentukan kemasan artifak - ini dinyatakan sebagai balang .

Seterusnya, kita perlu memberikan lokasi fail balang sebenar yang akan dipasang - ini boleh menjadi jalur fail mutlak atau boleh menjadi relatif, menggunakan sifat yang ada di Maven . Dalam kes ini, harta $ {basedir} mewakili akar projek, iaitu lokasi di mana fail pom.xml wujud. Ini bermaksud bahawa fail someartifact-1.0.jar perlu diletakkan dalam direktori / dependencies / di bawah root.

Akhirnya, terdapat beberapa butiran pilihan lain yang dapat dikonfigurasi juga.

2.2. Pelaksanaannya

Pelaksanaan yang memasang fail matlamat adalah terikat kepada validate fasa dari standard Maven membina kitaran hayat. Oleh itu, sebelum cuba menyusun - anda perlu menjalankan fasa pengesahan secara eksplisit:

mvn validate

Selepas langkah ini, penyusunan standard akan berfungsi:

mvn clean install

Setelah fasa kompilasi dijalankan, someartifact-1.0.jar kami dipasang dengan betul di repositori tempatan kami, sama seperti artifak lain yang mungkin telah diambil dari pusat Maven itu sendiri.

2.3. Menjana POM vs Membekalkan POM

Persoalan sama ada kita perlu menyediakan fail pom.xml untuk artifak itu atau tidak bergantung terutamanya pada pergantungan runtime artifak itu sendiri. Ringkasnya, jika artifak itu bergantung pada runtime pada balang lain, toples ini juga perlu ada di classpath pada waktu runtime. Dengan artifak sederhana yang tidak seharusnya menjadi masalah, kerana kemungkinan tidak akan ada ketergantungan pada waktu proses (daun dalam grafik ketergantungan).

Pilihan menghasilkanPom dalam matlamat pemasangan fail harus mencukupi untuk jenis artifak ini:

true

Walau bagaimanapun, jika artifak itu lebih kompleks dan mempunyai pergantungan bukan sepele , maka, jika ketergantungan ini belum ada di jalan kelas, ia mesti ditambah. Salah satu cara untuk melakukannya adalah dengan menentukan kebergantungan baru ini secara manual dalam fail pom projek. Penyelesaian yang lebih baik adalah menyediakan fail pom.xml tersuai bersama artifak yang dipasang:

false ${basedir}/dependencies/someartifact-1.0.pom

Ini akan membolehkan Maven menyelesaikan semua kebergantungan artifak yang ditentukan dalam pom.xml khusus ini , tanpa perlu menentukannya secara manual dalam fail pom utama projek.

3. Kesimpulannya

Artikel ini menerangkan cara menggunakan balang yang tidak dihoskan di mana sahaja dalam projek Maven dengan memasangnya secara tempatan dengan plugin-maven-install .