Perintah Maven untuk menentukan file pengaturan.xml mana yang digunakan Maven


Jawaban:


333

Mulai pakar dengan opsi -X (debug) dan periksa awal output. Seharusnya ada sesuatu seperti ini:

...
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from c:\....\apache-maven-3.0.3\conf\settings.xml
[DEBUG] Reading user settings from c:\....\.m2\settings.xml
[DEBUG] Using local repository at C:\....\repository
...

(Nama direktori asli dihapus oleh saya)


10
Mungkin ini tidak ada dalam output debug sampai maven 3 dirilis, tetapi posting Anda sekitar 2,5 tahun kemudian akhirnya jawaban tepat yang saya cari (maaf atas keterlambatan 6 bulan dalam menyadarinya).
harschware

Versi maven yang saya gunakan, maven2.x, tidak menunjukkan detail penting ini ketika flag -B digunakan. ... Sayangnya, jika Anda mencoba men-debug apa yang sedang terjadi dengan server Jenkins.
Cognitiaclaeves

168

Komentar Anda untuk jawaban cletus (benar) menyiratkan bahwa ada beberapa file pengaturan Maven yang terlibat.

Maven selalu menggunakan satu atau dua file pengaturan. Pengaturan global yang didefinisikan dalam ($ {M2_HOME} /conf/settings.xml) selalu diperlukan. File pengaturan pengguna (didefinisikan dalam $ {user.home} /. M2 / settings.xml) adalah opsional. Pengaturan apa pun yang ditentukan dalam pengaturan pengguna didahulukan dari pengaturan global terkait.

Anda dapat mengganti lokasi pengaturan global dan pengguna dari baris perintah, contoh berikut ini akan mengatur pengaturan global ke c: \ global \ settings.xml dan pengaturan pengguna ke c: \ user \ settings.xml :

mvn install --settings c:\user\settings.xml 
    --global-settings c:\global\settings.xml

Saat ini tidak ada properti atau sarana untuk menetapkan dari mana file pengaturan pengguna dan global digunakan dari dengan Maven. Untuk mengakses nilai-nilai ini, Anda harus memodifikasi MavenCli dan / atau DefaultMavenSettingsBuilder untuk menyuntikkan lokasi file ke objek Pengaturan yang diselesaikan.


1
akan lebih bagus jika kita bisa memberikan beberapa pengaturan pengguna.xml, jadi kita bisa menggunakannya dengan proyek yang berbeda misalnya. Saya tahu bahwa kami dapat menggunakan profil. Tetapi akan jauh lebih baik jika akan ada file terpisah. Itu tidak mungkin, kan ?! Bersulang!
despot

Saya sedang mencari solusi untuk mengganti pengaturan pengguna saya hanya sekali tanpa harus mengutak-atik file. Jadi saya hanya menggunakan file global untuk pengaturan pengguna. Yaitu - pengaturan c: \ global \ settings.xml dengan cara ini file pengguna dihilangkan
msp

@despot, terlambat ke pesta tetapi dengan cara Anda dapat melalui beberapa profil yang ditentukan dan beberapa 'pemicu' khusus: maven.apache.org/settings.html#Aktivitas
tidak dapat dibagi

Itu selalu meminta pom di folder saat ini. "Sasaran yang Anda tentukan memerlukan proyek untuk dijalankan tetapi tidak ada POM dalam direktori ini (/). Harap verifikasi Anda memanggil Maven dari direktori yang benar. -> [Bantuan 1]"
Nilesh


40

Ini adalah file konfigurasi untuk Maven. Itu dapat ditentukan pada dua tingkatan:

  1. Tingkat Pengguna. File settings.xml ini memberikan konfigurasi untuk satu pengguna, dan biasanya disediakan dalam $ {user.home} /. M2 / settings.xml.

              NOTE: This location can be overridden with the CLI option:
    
              -s /path/to/user/settings.xml
  2. Tingkat Global. File settings.xml ini memberikan konfigurasi untuk semua pengguna Maven pada mesin (dengan asumsi mereka semua menggunakan instalasi Maven yang sama). Biasanya disediakan dalam $ {maven.home} /conf/settings.xml.

              NOTE: This location can be overridden with the CLI option:
    
              -gs /path/to/global/settings.xml

1
properti ini M2_HOME, bukan maven.home
Penjual Kaya

Itu tidak masalah. Jika Anda mengatur variabel lingkungan menggunakan maven.home, itu tidak akan menjadi masalah
firstthumb

24

The M2_HOMEvariabel lingkungan untuk satu global. Lihat Referensi Pengaturan :

The settingselemen dalam settings.xmlfile yang mengandung unsur-unsur yang digunakan untuk menentukan nilai-nilai yang mengkonfigurasi eksekusi Maven dalam berbagai cara, seperti pom.xml, tetapi tidak harus paket untuk setiap proyek tertentu, atau didistribusikan ke pemirsa. Ini termasuk nilai-nilai seperti lokasi repositori lokal, server repositori jarak jauh alternatif, dan informasi otentikasi. Ada dua lokasi tempat file settings.xml dapat hidup:

  • Instalasi Maven: $M2_HOME/conf/settings.xml
  • Instalasi pengguna: ${user.home}/.m2/settings.xml

Jika jawaban ini menyiratkan bahwa menentukan repositori hanya dilakukan dengan memeriksa lingkungan maka ini adalah jawaban yang valid. Saya berharap untuk belajar tentang saklar baris perintah atau sesuatu yang memberikan daftar pasti jalur yang memenuhi syarat untuk semua file settings.xml yang digunakan ... Saya pikir mungkin tidak ada mekanisme seperti itu.
harschware

3
+1 memberi jawaban, Cletus. Saya pikir ada baiknya untuk menyebutkan baris berikutnya dari tautan "Referensi Pengaturan" Anda:the former settings.xml are also called global settings, the latter settings.xml are referred to as user settings. If both files exists, their contents gets merged, with the user-specific settings.xml being dominant.
Kevin Meredith

Kebutuhan untuk memiliki konfigurasi khusus mesin untuk menemukan repositori pribadi sangat menyakitkan saya. Saya menyadari ini adalah status quo di ekosistem Jawa tetapi itu mengarah ke pengaturan pembangunan yang sangat tidak dapat diproduksi kembali.
jpierson

24

Metode cepat dan kotor untuk menentukan apakah Maven menggunakan pengaturan yang diinginkan.xml akan membatalkan xml-nya dan menjalankan beberapa perintah maven aman yang memerlukan pengaturan.xml.

Jika membaca ini settings.xml kemudian Maven laporan kesalahan: "Kesalahan membaca settings.xml ..."


3
Sementara jawaban Cletus sangat informatif, jawaban ini dalam arti paling ketat lebih dari apa yang saya cari (mengingat tampaknya ada kekurangan pengaturan.xml mekanisme pelaporan file di Maven sendiri)
harschware
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.