Impor dependensi Maven di IntelliJ IDEA

208

Saya punya pertanyaan kecil tentang IntelliJ IDEA 11. Saya baru saja mengimpor proyek dari subversi - ini adalah proyek pakar. Tapi saya punya masalah dalam dependensi maven library sehingga saya tidak bisa memasukkan semua dependensi maven secara otomatis - IDEA hanya menunjukkan kesalahan dependensi ketika saya membuka kelas itu / Itulah yang saya dapatkan di sini:

masukkan deskripsi gambar di sini

Jadi saya ingin semua dependensi ditambahkan secara otomatis - apakah itu mungkin atau apakah saya harus melalui semua file kelas untuk mengidentifikasi dan menambahkan dependensi pakar ?!

UPDATE: Setelah melakukan beberapa modifikasi saya menemukan cara menyelesaikan masalah saya dengan beberapa cara. Itulah yang saya lakukan: masukkan deskripsi gambar di sini

tapi saya pikir secara logis itu tidak akan termasuk dan memeriksa dependensi baru di depan?! ... Apakah ada area pengaturan untuk ini di intelliJ - dependensi ekspor otomatis ke classpath?!

Zaur Guliyev
sumber
9
Ini mengunduh semua dependensi tetapi sepertinya tidak menambahkan semuanya ke classpath ...
Zaur Guliyev
3
dan masalah lain adalah bahwa intelliJ menunjukkan kepada saya kesalahan yang digarisbawahi merah hanya ketika saya membuka file java itu ...
Zaur Guliyev
4
Salah satu contoh di mana Anda mendapatkan garis merah ini adalah jika Anda memiliki ketergantungan SNAPSHOT dengan classifier, di mana versi yang lebih baru dari dependensi tanpa classifier ada. Ini sangat legal di Maven, tetapi IntelliJ bingung mencoba mencari jalan ke file fisik di repositori Maven lokal Anda.
RCross
4
FYI ini masih bisa terjadi di 15.0.2. Baru saja terjadi pada saya. Harus meniup file .iml saya dan folder .idea dan impor ulang. Sangat membuat frustrasi b / c saya menghabiskan 2 jam melawannya, dan akhirnya kehilangan semua konfigurasi run saya yang dibuat dengan hati-hati.
Kevin Pauli
3
@KevinPauli tidak perlu menghapus file proyek IDEA untuk itu, Anda bisa "Reimport All Maven Projects" di bawah tab "Maven Projects" untuk impor ulang secara manual.
Zaur Guliyev

Jawaban:

282

IntelliJ harus mengunduh dan menambahkan semua dependensi Anda ke classpath proyek secara otomatis selama POM Anda patuh dan semua dependensi tersedia.

Saat mengimpor proyek Maven ke IntelliJ, kotak informasi biasanya muncul menanyakan apakah Anda ingin mengonfigurasi Impor Otomatis untuk proyek Maven. Itu berarti bahwa jika Anda membuat perubahan pada POM Anda, perubahan itu akan dimuat secara otomatis.

Anda dapat mengaktifkan fitur tersebut ke File> Pengaturan> Maven> Mengimpor, ada kotak centang yang mengatakan "Impor proyek Maven secara otomatis".

Jika itu tidak membantu, maka saya akan menyarankan untuk melakukan pembersihan penuh dan mulai lagi:

  • Tutup jendela proyek Anda (dan IntelliJ) dan hapus semua *.imlfile dan semua .ideafolder (harus ada satu per modul)
  • Jalankan mvn clean installdari baris perintah
  • Impor ulang proyek ke IntelliJ dan perhatikan ketika ia meminta Anda untuk mengaktifkan impor otomatis

Pembaruan IntelliJ 2016 :

Pengaturan Import Maven Projects secara otomatis telah dipindahkan ke Build, Execution, Deployment> Build Tools> Maven> Mengimpor dalam preferensi IntelliJ Anda.

Alonso Dominguez
sumber
jadi solusi Anda adalah untuk menandai dependensi yang diekspor? itu aneh! Saya sering menggunakan IntelliJ dan Maven dan tidak ada proyek saya (beberapa di antaranya adalah multi-proyek) yang mengaktifkan fitur ekspor ... apakah itu Edisi Komunitas atau Ultimate?
Alonso Dominguez
1
Ini adalah Ultimate Edition tetapi proyek yang telah saya impor dibangun di Eclipse - sehingga .classpath diaktifkan di sana tetapi IntelliJ menggunakan .iml - Jadi saya pikir logis untuk memasukkan lib ini untuk pertama kalinya jika proyek ini tidak memiliki .iml file sebelumnya ..?!
Zaur Guliyev
1
oh, ok - apakah Anda mencoba mengimpornya sebagai proyek Maven daripada proyek Eclipse? Saya terbiasa tidak memeriksa dalam file terkait IDE ke dalam repositori sumber saya ketika bekerja dengan proyek-proyek Maven: jika itu adalah proyek Maven, maka aturan Maven
Alonso Dominguez
2
Anda dapat mengaktifkan Impor otomatis dalam preferensi / pengaturan. Buka preferensi / pengaturan dan cari "Impor proyek pakar secara otomatis". itu berada di bawah Build, Execution, Deployment> Build Tools> Maven> Mengimpor
Seyed Jalal Hosseini
2
@JustinBlank tidak terkejut dengan itu, mengingat bahwa ini adalah jawaban dari 2012. Pengaturan masih ada, mereka baru saja dipindahkan ke tempat lain (jawaban telah diperbarui).
Alonso Dominguez
66

Perbaiki sebelum IntelliJ 14

File [menu] -> Pengaturan -> maven -> mengimpor dan hapus centang "gunakan maven3 untuk mengimpor proyek"

ref: http://youtrack.jetbrains.com/issue/IDEA-98425 (yang mungkin memiliki beberapa ide lain juga)

Perbaiki IntelliJ 15+

Lihat lagi, dengan IntelliJ 15 kali ini, yang tidak memiliki opsi "gunakan maven3 untuk mengimpor" lagi. Penyebabnya adalah bahwa kadang-kadang IntelliJ "tidak mengurai ketergantungan maven dengan benar" dan jika tidak mengurai salah satu dari mereka dengan benar, tampaknya menyerah pada mereka semua , tampaknya. Anda dapat mengetahui apakah ini masalahnya dengan membuka jendela alat proyek maven (Lihat menu -> Alat Windows -> Proyek Maven). Kemudian perluas salah satu proyek pakar dan dependensinya. Jika semua dependensi digarisbawahi dengan warna merah, "Houston, kami memiliki masalah". masukkan deskripsi gambar di sini

Anda benar-benar dapat melihat kegagalan nyata dengan mousing atas nama proyek itu sendiri.

masukkan deskripsi gambar di sini

Dalam contoh saya, tertulis "Masalah: Tidak ada versi yang tersedia untuk XXX" atau "Gagal membaca keterangan untuk artifact org.xy.z" ref: https://youtrack.jetbrains.com/issue/IDEA-128846 dan https: // youtrack.jetbrains.com/issue/IDEA-152555

Tampaknya dalam kasus ini saya berurusan dengan toples yang tidak memiliki file pom terkait (dalam repo pakar kami, dan juga repositori lokal saya). Jika ini juga masalah Anda, "aripekerjaan saat ini: jika Anda tidak benar-benar perlu menggunakan kelas dari toples itu dalam kode Anda sendiri (misalnya hanya ketergantungan maven transitif), Anda sebenarnya bisa lolos dengan berkomentar keluar dari pom (sementara), proyek maven dimuat ulang, dan kemudian batalkan komentarnya. Entah bagaimana setelah itu IntelliJ "mengingat" dependensi kerjanya yang lama. Menambahkan maven transitif dikecualikan sementara mungkin juga melakukannya, jika Anda menabraknya dari rantai dependensi transitif. "

Hal lain yang mungkin membantu adalah menggunakan "versi yang lebih baru" dari maven daripada bundel 3.0.5. Untuk mengaturnya agar menggunakan ini sebagai default, tutup semua windows intellij Anda, kemudian buka preferensi -> build, eksekusi dan deployment -> build tools -> maven, dan ubah direktori home maven, seharusnya mengatakan "Untuk default memproyeksikan "di bagian atas ketika Anda menyesuaikan ini, meskipun Anda dapat menyesuaikannya untuk proyek tertentu juga, selama Anda" mengimpor "setelah menyesuaikannya.

Hapus Cache

Menghapus folder cache intellij Anda (windows: HOMEPATH /. {IntellijIdea, IdeaC} XXX linux ~ / .IdeaIC15) dan / atau menghapus dan menginstal ulang IntelliJ itu sendiri. Ini juga dapat dilakukan dengan masuk ke File [menu] -> Invalidate Caches / Restart.... Klik invalidate and restart. Ini akan mengindeks ulang seluruh proyek Anda dan menyelesaikan banyak masalah yang sulit dilacak dengan IntelliJ.

rogerdpack
sumber
2
Anehnya hampir setiap pos lainnya menyarankan untuk memeriksa opsi "Gunakan Maven3 untuk mengimpor proyek" untuk menyelesaikan masalah ini sementara sebenarnya menghapus centang itu memecahkan masalah bagi saya. Mengapa? Saya tidak tahu Terima kasih!
janhink
3
Pada v14 ultimate, saya memilih pakar eksternal dan semuanya kembali berfungsi.
AlikElzin-kilaka
@ AlikElzin-kilaka Mengubah direktori home maven ke maven home eksternal memang banyak membantu. Setelah saya memperbarui IDEA ke v14 ultimate, saya tidak dapat meluncurkan proyek saya di IDEA karena "Tidak ada plugin tomcat6 ditemukan", tetapi saya dapat meluncurkan proyek menggunakan perintah mvn, dan mengubah direktori home maven menjadi eksternal menjadi menyelesaikannya
JerseyGood
Di IntelliJ 2016.2.1, menonaktifkan impor otomatis yang mengubah Maven home directoryke versi yang digunakan tumpukan kami (3.3.9) memperbaiki masalah bagi saya.
Wheeler
1
Mengubah maven home directorydari Bundle (Maven 3)ke jalan tempat pakar saya dipasang .../maven/3.6.1/libexecbekerja untuk saya
Marcelo Xavier
37

Saat mengimpor proyek, pilih pom.xmlbukan direktori proyek. Itu harus bekerja.

chichi
sumber
1
kadang-kadang klik pada opsi "Impor kembali semua proyek maven" di bawah jendela Maven Projects
vikramvi
1
Mungkin ini adalah solusi yang paling elegan, bersih, (dan ini agak canggung intellij tidak membantu Anda dalam
menebaknya
Bekerja untuk saya juga, dengan Edisi Komunitas IntelliJ 2019.3.4. Terima kasih atas solusi yang mudah. :)
asymmetryFan
22

Cobalah untuk Mengimpor Ulang proyek dari panel Proyek Maven di IntelliJ IDEA. Seharusnya mengunduh dan mengonfigurasi semua dependensi yang ditentukan dalam Anda pom.xmlsecara otomatis.

Jika unduhan tidak berfungsi dari IDEA karena alasan tertentu, coba mvn installdari baris perintah dan lihat apakah dependensinya dapat diambil.

Tentu saja semua dependensi yang diperlukan dan repositori kustom apa pun harus ditentukan secara langsung dalam pom.xmlfile.

CrazyCoder
sumber
14

Untuk IntelliJ 2016-2.4 (dan saya percaya versi baru-ish lainnya):

Lihat> Alat Windows> Proyek Maven

Di bilah alat yang baru dibuka, pilih pengaturan Maven (ikon dari set alat).

Ketika layar ini terbuka, perluas menu Maven dan klik 'Impor'

Di sini, klik "Impor proyek Maven secara otomatis." Juga pastikan bahwa opsi 'JDK untuk Importir' cocok dengan versi JDK yang ingin Anda gunakan.

Klik OK. Sekarang pergi ke ketergantungan merah di pom.xml Anda, pilih bola lampu merah, dan klik 'Perbarui indeks Maven'.

Paul Back
sumber
1
memilih JDK yang tepat untuk importir membantu saya. Saya juga harus menjalankan mvn idea: clean idea: idea untuk menutup masalah terakhir.
Vincent F
9

Apa yang membantu saya:

Navigasi: Pengaturan | Bangun, Eksekusi, Penempatan | Maven

Tentukan "direktori home Maven" - tempat Anda menginstal maven

Anatolii Stepaniuk
sumber
7

Jika modul maven tertentu tidak dikompilasi, periksa apakah pom.xml mereka ada di daftar "file yang diabaikan". Dalam IntelliJ goto

preferensi -> pengaturan proyek -> pakar -> file yang diabaikan

dan periksa apakah pom.xml terkait diabaikan.

Udo
sumber
5

Buka IntelliJ Idea, Buka File> Pengaturan Lainnya> Pengaturan Default ...> Maven (Preferensi)> Mengimpor atau | Preferences > Maven > Importing

masukkan deskripsi gambar di sini

Klik Aktifkan Impor Otomatis di konsol.

masukkan deskripsi gambar di sini

Prashanth Sams
sumber
4

Saat Anda membuat proyek baru, Anda hanya perlu memilih opsi:

...
Impor proyek dari model eksternal
Buat struktur proyek IDEA di atas model eksternal yang ada (Eclipse, Maven ...)
...

Anda akan menemukannya langsung dari sana.
Dan dalam kasus Anda, Anda dapat menutup proyek Anda dan hanya membuat yang baru. Pilih direktori proyek Anda, yang akan menimpanya, menjadikannya proyek Maven.

Markus Coetzee
sumber
Sepakat. Hampir dipastikan OP salah mengimpor proyek.
kaqqao
4

Mengimpor dependensi Maven mungkin tidak berfungsi jika Anda mengimpor jalur yang sama beberapa kali. Ini dapat terjadi secara otomatis setelah mengimpor proyek pakar yang ada. Saya tidak tahu mengapa ini terjadi, jadi saya cenderung berpikir itu adalah bug.

Misalnya, jika proyek saya adalah

hibernate
  src/main
  src/test

tiga jalur dapat diimpor sebagai simpul teratas:

hibernate
src/main
src/test

Jika demikian, dependensi tampaknya benar, tetapi mereka tidak akan digunakan sampai Anda menghapus jalur berlebihan (dalam kasus ini, src/maindan src/test). Setelah Anda melakukan ini, segarkan dan klik Build> Rebuild Project. IDEA akan mengambil dependensi.

Gejala masalah ini adalah bahwa IDEA memperingatkan Anda tentang jalur duplikat ketika Anda secara manual memeriksa perpustakaan (tangkapan layar kedua dalam pertanyaan).

Ada beberapa cara untuk membaca kembali dependensi jika Anda membutuhkannya. Jika Anda pergi ke tab "Proyek Maven", ada ikon "Masukkan kembali Semua Proyek Maven" di kiri atas tab. Jika Anda mencurigai IDEA menjadi bingung, Anda dapat mengklik File> Valid Cache.

Jano
sumber
3

Pergilah ke struktur proyek Anda, di bawah Pengaturan proyek, Modul, pilih tabel dependensi. Untuk setiap ketergantungan, ubah cakupan dari 'Tes' ke 'Kompilasi'.

tunas
sumber
3

Impor kembali proyek. Jika Anda menginstal plugin maven, Anda dapat menggunakan ini.

Klik kanan pada proyek -> Maven -> Reimport

Damith Ganegoda
sumber
3

Jalur cek pertama Ditentukan untuk file Pengaturan Pengguna: dalam Pengaturan -> Bangun, Eksekusi, Pengembangan -> Bangun Alat -> Maven . Bidang tersebut harus memiliki lintasan pengaturan.xml pakar Anda. Juga settings.xml harus memiliki jalur repositori jarak jauh yang benar.

amol13
sumber
Ini berfungsi untuk saya, dalam file settings.xml, entri untuk tag <url> yang bersarang di tag <mirror> sudah usang. Saya berunding dengan kolega saya untuk mendapatkan nilai entri yang diperbarui. Saya membuat perubahan ke ~ / .m2 / settings.xml, ditutup intelliJ dan mulai lagi. Setelah restart, tidak melakukan apa-apa lagi, garis bawah merah yang muncul di tampilan pakar telah hilang. Anehnya, sebagian besar dependensi root yang disorot selalu ada di entri "Perpustakaan Eksternal" dari tampilan Proyek, baik sebelum dan sesudah saya melakukan perbaikan ini.
Steve T
3

Saya memiliki masalah serupa, dalam kasus saya saya menggunakan kebiasaan settings.xmlyang tidak dipilih dari IntelliJ.

Solusi:
File > Settings > Build, Execution, Deployment > Maven: User settings file (pilih di sini pengaturan khusus saya.xml).

Petre
sumber
3

Saya memiliki masalah yang sama dan mencoba semua jawaban yang disebutkan di sini, tidak ada yang berhasil.

Solusi sederhana adalah pergi ke folder proyek Anda dan hapus semua file .idea dan .iml dan restart ide IntelliJ. Berhasil. Tidak perlu melakukan apa pun dengan pengaturan.

Yashaswi NP
sumber
2

Saya mengalami masalah bahwa beberapa subdependensi tidak dapat diselesaikan di IntelliJ 2016.3.X. Ini dapat diperbaiki dengan mengubah Maven home directorydi Pengaturan> Bangun, Eksekusi, Penempatan> Bangun Alat> Maven dari Bundled (Maven 3)menjadi /usr/share/maven.

Setelah itu semua subdependensi teratasi seperti pada versi IntelliJ sebelumnya.

Johannes Stadler
sumber
2

Maven - Reimport tidak bekerja untuk saya. Saya memiliki proyek Musim Semi di STS (Eclipse) dan solusi saya adalah mengimpor proyek ke IDEA seperti:

1) File - Baru - Proyek dari Sumber yang Ada ... - pilih direktori - pilih Eclipse.
2) Setel autoimport Maven ke true dalam pengaturan.
3) Kemudian klik kanan di pom.xml dan pilih Add as Maven Project.

Setelah ini mengimpor semuanya.

Svitlana Onish
sumber
2

Saya memiliki masalah yang sama dengan macbook saya, hanya melakukan sedikit perubahan pom.xmldan mulai mengunduh semua dependensi:

Ketergantungan sebelumnya ditulis seperti di bawah ini untuk mesin windows saya:

<dependencies>
 <dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>1.4</version>
</dependency>
</dependencies>

Aku hanya dihapus <dependencies>dan </dependencies>tag dan mulai men-download semua dependensi:

<dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>1.4</version>
</dependency>

Saya tidak yakin itu akan bekerja untuk Anda atau tidak .. tetapi bekerja dengan baik untuk saya.

Terima kasih

Amit Joshi
sumber
1

Jika di sudut kanan bawah tertulis "2 proses berjalan ..." atau serupa, Anda mungkin hanya perlu menunggu sampai selesai, karena mungkin perlu waktu untuk mengunduh semua toples.

Djechlin
sumber
1

Saya memecahkan masalah ini dengan memperbarui file settings.xml saya dengan konfigurasi mirror yang benar, tampaknya intellij akan mencoba mengunduh meta-data dari repositori setiap kali modul pakar diimpor.

Abel Zhan
sumber
1

Membajak sedikit untuk menambahkan apa yang akhirnya bekerja untuk saya:

Pergilah ke Maven Projectsbilah sisi di tepi kanan IDE, dan verifikasi bahwa dependensi Anda terdaftar dengan benar di bawah modul Anda di sana. Dengan asumsi mereka, hanya meminta IDEA untuk mengimpor kembali kemudian (tombol pertama di atas, terlihat seperti dua panah biru yang membentuk lingkaran berlawanan arah jarum jam).

Setelah saya melakukan itu, dan biarkan IDEA memuat kembali proyek untuk saya, semua ketergantungan saya dipahami secara ajaib.

Untuk referensi: ini dengan IDEA 13.1.2

Sunspar
sumber
1

Saya menghadapi masalah yang sama dan mencoba semua yang disarankan yang tidak menyelesaikan masalah, saya menggunakan Intellij versi 13.1.3

Akhirnya setelah menghabiskan lebih dari beberapa jam mencoba memperbaikinya, saya memutuskan untuk mencoba versi yang ditingkatkan dan membuka proyek dalam versi 14.1.4 yang akhirnya menyelesaikan masalah. Saya akan berpikir ini sebagai kemungkinan bug di versi sebelumnya.

Saya harap ini membantu!

sjaiswal
sumber
1

Saya dapat menyelesaikannya dengan menghapus modul yang tidak perlu dari Pengaturan Proyek -> Daftar modul .

masukkan deskripsi gambar di sini

Ternyata modul tambahan ini dibuat secara otomatis oleh IntelliJ IDEA ketika saya membuat proyek IntelliJ dengan mengimpor dari folder proyek (bukan dengan membuka pom.xml). Kemudian, setelah mendeklarasikan proyek sebagai proyek Maven, modul yang tepat dibuat, dan modul yang ada bertentangan dengan mereka. Dimungkinkan juga untuk mengecualikan modul-modul tersebut selama pembuatan proyek.

elyor
sumber
1

Menghapus folder .idea dari direktori proyek, dan kemudian mengimpor kembali proyek tersebut sebagai proyek Maven adalah yang berhasil bagi saya.

Janac Meena
sumber
1

Dalam kasus saya, salah satu modul diabaikan karena beberapa alasan. Untuk mengatasinya: Klik kanan modul yang bermasalah dan pilih "Unignore Projects".

batalkan contoh proyek

KernelMode
sumber
1

Dalam kasus saya, jalur untuk JAVA yang digunakan oleh MAVEN tidak ditetapkan sebagai JAVA_HOME seperti yang dikonfigurasi pada mesin. Karenanya, ia bahkan tidak mencoba mengunduh dependensi. Langkah-langkah yang saya ikuti yang memecahkan masalah ini,

  1. Diperiksa untuk jalur JAVA, Pengaturan >> Bangun >> Bangun Alat >> Impor >> JDK untuk importir . Arahkan ke JAVA_HOME.

  2. mvn clean install -U

    Digunakan perintah di atas untuk memaksa unduhan dependensi.

  3. Proyek Maven yang diimpor kembali

Akanksha Sharma
sumber
0

Jika semuanya gagal, periksa apakah file jar di repositori .m2 lokal Anda memang valid dan tidak rusak. Dalam kasus saya, file belum sepenuhnya diunduh.

Markus Barthlen
sumber
0

Dalam maven dependensi disertakan untuk saya ketika saya menghapus bagian dependensiManagement xml dan hanya memiliki dependensi langsung di bawah bagian proyek

kuda laut
sumber
0

Masalahnya tampaknya bahwa meskipun daftar dependensi Anda di pom.xml, IntelliJ IDEA tidak membangun kembali dependensi tersebut ketika Anda menjalankan proyek Anda.

Apa yang berhasil bagi saya adalah ini:

Buka 'Jalankan' -> 'Edit Konfigurasi ...', cari aplikasi Anda, pastikan bagian "Sebelum peluncuran:" diperluas, klik tanda tambah hijau, dan pilih "Bangun Proyek".

masukkan deskripsi gambar di sini

Mike Nakis
sumber
0

saya dapat memperbaiki tambang dengan menambahkan baris kode ini setelah tag build di file pom.xml, saya membandingkannya dari proyek yang sedang berjalan dan menemukan perbedaannya, sekarang saya semua baik-baik saja.

<repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
ChibuezePaul ISoft
sumber