Apa yang dilakukan mvn di maven sebenarnya?

165

Saya baru saja mulai menggunakan Maven dan saya diberitahu untuk melakukannya mvn installdi direktori tertentu.

Apa yang mvn installdilakukan, tepatnya?

Saya pikir itu terlihat pom.xmldi folder saat ini dan mulai mengikuti instruksi yang ditentukan dalam file itu. Apakah itu benar?

Rajeshwar
sumber

Jawaban:

124

Seperti yang mungkin Anda ketahui, Maven adalah alat otomatisasi bangun yang disediakan oleh Apache yang melakukan lebih dari manajemen ketergantungan. Kita dapat menjadikannya sebagai rekan Semut dan Makefile yang mengunduh semua dependensi yang diperlukan.

Pada a mvn install, ia membingkai pohon dependensi berdasarkan pada konfigurasi proyek pom.xmlpada semua sub proyek di bawah super pom.xml(root POM) dan mengunduh / mengkompilasi semua komponen yang diperlukan dalam direktori yang disebut di .m2bawah folder pengguna. Ketergantungan ini harus diselesaikan untuk proyek yang akan dibangun tanpa kesalahan, dan mvn installmerupakan salah satu utilitas yang dapat mengunduh sebagian besar dependensi.

Selanjutnya, ada utilitas lain dalam Maven seperti dependency:resolveyang dapat digunakan secara terpisah dalam kasus-kasus tertentu. Build life cycle dari mvn adalah sebagai berikut: LifeCycle Bindings

  1. process-resources
  2. compile
  3. process-test-resources
  4. test-compile
  5. test
  6. package
  7. install
  8. deploy

Fase uji mvn ini dapat diabaikan dengan menggunakan flag -DskipTests=true.

unik
sumber
9
Hanya catatan tambahan, jika Anda ingin melewatkan semua tujuan tes terkait, gunakan: -Dmaven.test.skip = true (bukan -DskipTests = true)
Manoj Shrestha
Jawaban ini gagal untuk mengklarifikasi bahwa perintah instal akhirnya menginstal artefak secara lokal, yaitu di repositori lokal.
PeriChandra
34

Sudahkah Anda melihat salah satu dokumentasi Maven, misalnya, plugin instalasi maven ?

Versi singkatnya: itu akan membangun proyek dan menginstalnya di repositori lokal Anda.

Dave Newton
sumber
Katakanlah Anda menjalankan "mvn install" di perpustakaan open-source. Kemudian, Anda menjalankan "mvn install" pada proyek yang menggunakan pustaka sumber terbuka yang pertama kali kita kompilasi. Saat menjalankan "mvn install", apakah JAR pertama kali akan dicari di repo lokal? Atau tergantung pada file POM?
Kevin Meredith
1
@Kevin Seharusnya menjadi lokal, karena itu intinya. Jika tidak ada dalam repositori lokal, ia akan mencari dalam repositori apa pun yang telah Anda konfigurasikan (atau default) dan menginstalnya ke repo lokal Anda jika ditemukan. Saya curiga Anda dapat mengonfigurasinya untuk selalu melewati repo lokal, meskipun saya tidak tahu caranya tanpa melihatnya.
Dave Newton
17
Sudahkah Anda melihat dokumen kanonik untuk Maven? Situs Apache menjelaskan tujuan instalasi mvn sebagai berikut: "Dalam kebanyakan kasus, instal: instal tujuan tidak memerlukan konfigurasi apa pun, itu memerlukan POM proyek dan file artefak yang akan diinstal selama fase instalasi siklus hidup build default." Itu karena doc Apache gagal menjelaskan apa yang sebenarnya 'mvn install' lakukan sehingga orang-orang seperti poster, dan saya sendiri, mencari jawabannya. Pertanyaan yang masuk akal.
bethesdaboys
6

The install:installTujuan disediakan oleh «Apache Maven Install Plugin»:

Plugin Penginstal Apache Maven

Plugin Install digunakan selama fase instalasi untuk menambahkan artefak ke repositori lokal. Install Plugin menggunakan informasi di Badan POM ( groupId, artifactId, version) untuk menentukan lokasi yang tepat untuk artefak dalam repositori lokal.

Repositori lokal adalah cache lokal tempat semua artefak yang diperlukan untuk build disimpan. Secara default, ini terletak di dalam direktori home pengguna ( ~/.m2/repository) tetapi lokasi dapat dikonfigurasi dalam ~/.m2/settings.xmlmenggunakan <localRepository>elemen.

- Apache Maven Install Plugin - Pendahuluan .

Karena itu, tujuan tujuan yang tepat:

install:install digunakan untuk secara otomatis menginstal artefak utama proyek (JAR, WAR atau EAR), POM-nya dan semua artefak yang terlampir (sumber, javadoc, dll) yang dihasilkan oleh proyek tertentu.

- Apache Maven Install Plugin - Pendahuluan .

Untuk detail tambahan tentang tujuannya, silakan merujuk ke Plugin Install Apache Maven - install: install page.

Untuk detail tambahan tentang siklus hidup build secara umum dan di mana tempat tujuan memiliki siklus hidup build, silakan merujuk ke Maven - Pengantar halaman Build Lifecycle .

Sergey Brunov
sumber
3

Jawaban singkat

mvn instal

  • menambahkan semua artefak (dependensi) yang ditentukan dalam pom , ke repositori lokal (dari sumber jarak jauh).
Daniel Perník
sumber
2

-DskipTests=true adalah bentuk pendek dari -Dmaven.test.skip=true

Buat perubahan pada Setting.xml di folder .m2 Anda . Anda dapat menggunakan tautan ke repo lokal sehingga toples yang pernah di-downlaod jangan diunduh lagi dan lagi.

<url>file://C:/Users/admin/.m2/repository</url>
 </repository>
Jyoti Prakash
sumber
0

mvn menginstal pekerjaan utama adalah 1) Unduh Dependensi dan 2) Bangun Proyek

sementara pekerjaan 1 saat ini dirawat oleh ID seperti intellij (mereka mengunduh untuk setiap ketergantungan pada POM)

mvn install sekarang digunakan untuk pekerjaan 2 .

Aditya Rewari
sumber