dalam proyek J2EE saya, saya memiliki beberapa dependensi, yang tidak tersedia di repositori Maven mana pun, karena mereka adalah perpustakaan berpemilik. Pustaka ini harus tersedia saat runtime, sehingga harus disalin ke target /.../ WEB-INF / lib ...
Saat ini, saya mencantumkannya sebagai ketergantungan sistem di POM saya, tetapi dengan metode ini masalahnya adalah, itu tidak disalin ke build target selama kompilasi. Juga metode ini tidak terlalu elegan.
Jadi, manakah cara terbaik untuk mengintegrasikannya di Maven?
Catatan: Saya tidak ingin membuat repositori Maven saya sendiri.
java
maven-2
build-process
samson
sumber
sumber
Jawaban:
Seperti yang Anda katakan Anda tidak ingin mengatur repositori Anda sendiri, mungkin ini akan membantu.
Anda dapat menggunakan tujuan file instal dari maven-install-plugin untuk menginstal file ke repositori lokal. Jika Anda membuat skrip dengan permintaan Maven untuk setiap file dan menyimpannya di samping jars, Anda (dan siapa pun yang memiliki akses) dapat dengan mudah menginstal jars (dan file pom terkait) ke repositori lokalnya.
Sebagai contoh:
atau hanya
Anda kemudian dapat mereferensikan dependensi seperti biasa dalam proyek Anda.
Namun taruhan terbaik Anda masih menyiapkan repositori jarak jauh internal dan saya akan merekomendasikan menggunakan Nexus sendiri. Ini dapat berjalan di kotak pengembangan Anda jika diperlukan, dan biaya overhead minimal.
sumber
Untuk orang yang menginginkan solusi cepat untuk masalah ini:
cukup beri perpustakaan Anda groupID unik dan nama artefak dan arahkan ke tempatnya di sistem file. Anda baik untuk pergi.
Tentu saja ini adalah perbaikan cepat kotor yang HANYA akan bekerja pada mesin Anda dan jika Anda tidak mengubah jalur ke libs. Tetapi terkadang, hanya itu yang Anda inginkan, untuk menjalankan dan melakukan beberapa tes.
EDIT: cukup ulangi pertanyaan dan sadari bahwa pengguna sudah menggunakan solusi saya sebagai perbaikan sementara. Saya akan meninggalkan jawaban saya sebagai bantuan cepat untuk orang lain yang datang ke pertanyaan ini. Jika ada yang tidak setuju dengan ini, tolong beri saya komentar. :)
sumber
Buat folder repositori di bawah proyek Anda. Mari kita ambil
Kemudian, instal toples khusus Anda ke repo ini:
Terakhir, tambahkan definisi repo dan dependensi berikut ke project pom.xml:
sumber
/
(yaitu, menunjukkan folder), maka repo dia dibuat dengan groupId. Contoh: jika id grup adalahfoo.com
dan localRepositoryPath adalahrepo
, maka folder repo menjadirepo.foo.com
.Anda perlu menyiapkan repositori lokal yang akan menjadi tuan rumah perpustakaan tersebut. Ada sejumlah proyek yang melakukan hal itu. Misalnya Artifactory .
sumber
Tidak ada solusi yang berfungsi jika Anda menggunakan Jenkins build !! Saat pom dijalankan di dalam server build Jenkins .. solusi ini akan gagal, karena run pom Jenkins akan mencoba mendownload file ini dari repositori perusahaan.
Salin jars di bawah src / main / resources / lib (buat folder lib). Ini akan menjadi bagian dari proyek Anda dan terus berlanjut ke server penerapan. Di server penerapan, pastikan skrip startup Anda berisi src / main / resources / lib / * di classpath. Biola.
sumber
Anda dapat menginstalnya di repositori lokal pribadi (misalnya .m2 / repositori di bawah direktori home Anda): detail lebih lanjut di sini
sumber
Jika saya memahami dengan baik, jika yang ingin Anda lakukan adalah mengekspor dependensi selama fase kompilasi sehingga tidak perlu mengambil secara manual setiap library yang diperlukan, Anda dapat menggunakan mojo copy-dependencies .
Semoga dapat bermanfaat dalam kasus Anda ( contoh )
sumber
Solusi @Ric Jafe adalah yang berhasil untuk saya.
Inilah yang saya cari. Cara untuk mendorongnya melalui kode pengujian penelitian. Tidak ada yang mewah. Ya, saya tahu itulah yang mereka semua katakan :) Berbagai solusi plugin maven tampaknya berlebihan untuk tujuan saya. Saya memiliki beberapa toples yang diberikan kepada saya sebagai lib pihak ketiga dengan file pom. Saya ingin kompilasi / dijalankan dengan cepat. Solusi yang saya sesuaikan dengan python ini bekerja dengan sangat baik bagi saya. Potong dan tempelkan ke pom saya. Kode Python / Perl untuk tugas ini ada di Q&A ini: Dapatkah saya menambahkan jars ke maven 2 membangun classpath tanpa menginstalnya?
sumber
Terus gunakan mereka sebagai ketergantungan sistem dan salin ke target /.../ WEB-INF / lib ... menggunakan plugin ketergantungan Maven:
http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html
sumber
Instal saja tidak berhasil untuk saya.
sumber