IntelliJ IDEA'da Maven bağımlılıklarını içe aktarma


208

IntelliJ IDEA 11 hakkında küçük bir sorum var. Yıkımdan sadece bir proje aldım - bu bir maven projesi. Ancak tüm maven bağımlılıklarını otomatik olarak ekleyemem diye maven kitaplığı bağımlılıklarında bir sorunum var - IDEA sadece bu sınıfı açtığımda bağımlılık hataları gösteriyor / burada aldığım şey:

resim açıklamasını buraya girin

Bu yüzden tüm bağımlılıkların otomatik olarak eklenmesini istiyorum - bu mümkün mü yoksa maven bağımlılıklarını tanımlamak ve eklemek için tüm sınıf dosyalarından geçmem gerekiyor mu ?!

GÜNCELLEME: Bazı değişiklikler yaptıktan sonra sorunumu bir şekilde nasıl çözeceğimizi öğrendim. Yaptığım şey bu: resim açıklamasını buraya girin

ama mantıksal olarak ileride yeni bağımlılıklar içermeyecek ve kontrol etmeyecek mi?


9
Tüm bağımlılıkları indirir, ancak hepsini sınıf
yoluna eklemiyor

3
ve başka bir sorun intelliJ bana sadece o java dosyasını açtığımda kırmızı altı çizili hataları gösteriyor ...
Zaur Guliyev

4
Bu kırmızı satırı alacağınız bir örnek, bir sınıflandırıcıyla SNAPSHOT bağımlılığınız varsa, burada sınıflandırıcı olmadan bağımlılığın daha yeni bir sürümünün mevcut olmasıdır. Maven'de bu tamamen yasaldır, ancak IntelliJ, yerel Maven deponuzdaki fiziksel dosyanın yolunu bulmaya çalışırken kafanız karışır.
RCross

4
Bilginize, bu yine de 15.0.2'de olabilir. Sadece başıma geldi. Benim .iml dosya ve .idea klasörü ve reimport uçurmak zorunda kaldı. İnanılmaz derecede sinir bozucu b / c Ben mücadele 2 saat geçirdim ve nihayetinde özenle hazırlanmış tüm çalışma yapılandırmalarını kaybetti.
Kevin Pauli

3
@KevinPauli bunun için IDEA proje dosyalarını kaldırmanıza gerek yok, sadece manuel olarak yeniden almak için "Maven Projeleri" sekmesi altında "Tüm Maven Projelerini Yeniden Aktar" ı kullanabilirsiniz.
Zaur Guliyev

Yanıtlar:


282

IntelliJ, POM'nuz uyumlu olduğu ve tüm bağımlılıklar mevcut olduğu sürece tüm bağımlılıklarınızı otomatik olarak projenin sınıfyoluna eklemelidir.

Maven projelerini IntelliJ'e aktarırken genellikle Maven projeleri için Otomatik İçe Aktarma yapılandırmak isteyip istemediğinizi soran bir bilgi kutusu görüntülenir . Bu, POM'nizde herhangi bir değişiklik yaparsanız, bu değişikliklerin otomatik olarak yükleneceği anlamına gelir.

Dosya> Ayarlar> Maven> İçe Aktarma'ya giderek bu özelliği etkinleştirebilirsiniz, "Maven projelerini otomatik olarak içe aktar" yazan bir onay kutusu vardır.

Bu yardımcı olmazsa, tam bir temizlik yapmayı ve tekrar başlamayı öneririm:

  • Proje pencerenizi (ve IntelliJ) kapatın ve tüm *.imldosyaları ve tüm .ideaklasörleri kaldırın (modül başına bir tane olmalıdır)
  • mvn clean installKomut satırından çalıştır
  • Projeyi IntelliJ'e yeniden aktarın ve otomatik içe aktarmayı etkinleştirmenizi istediğinde dikkat edin

IntelliJ 2016 Güncellemesi :

İthalat Maven'in Projeleri otomatik taşındı ayarı , Yürütme, Dağıtım> Yapı Araçlar> Maven> İçe kurmak için IntelliJ tercihlerinde.


çözümünüz bağımlılıkları dışa aktarılmış olarak mı işaretlemekti? bu tuhaf! IntelliJ ve Maven'i çok kullanıyorum ve projelerimden hiçbiri (bazıları çoklu projeler) dışa aktarma özelliği etkin ... Topluluk Sürümü veya Ultimate mı?
Alonso Dominguez

1
Bu bir Ultimate Sürümü ama ithal ettiğim proje Eclipse üzerine inşa edildi - böylece .classpath orada etkinleştirildi, ancak IntelliJ .iml kullanıyor - Bu projede .iml yoksa ilk kez bu kütüphaneleri dahil etmenin mantıklı olduğunu düşünüyorum. önce dosya ..?!
Zaur Guliyev

1
oh, tamam - Eclipse yerine Maven projesi olarak almaya çalıştınız mı? Maven projeleriyle çalışırken IDE ile ilgili dosyaları kaynak depolarıma teslim etmem için alışkınım: Eğer bir Maven projesi ise Maven kuralları
Alonso Dominguez

2
Otomatik içe aktarmayı tercihlerde / ayarda etkinleştirebilirsiniz. Tercihleri ​​/ ayarları açın ve "Maven projelerini otomatik olarak içe aktar" için arama yapın. Yapı, Yürütme, Dağıtım> Yapı Araçları> Maven> İçe Aktarılıyor
Seyed Jalal Hosseini

2
@JustinBlank, bunun 2012'den gelen bir cevap olduğu göz önüne alındığında şaşırmadı. Ayarlar hala orada, sadece başka bir yere taşındı (cevap güncellendi).
Alonso Dominguez

66

IntelliJ 14 öncesi düzeltme

Dosya [menü] -> Ayarlar -> maven -> içe aktarma ve "projeyi içe aktarmak için maven3 kullan" seçeneğinin işaretini kaldırma

ref: http://youtrack.jetbrains.com/issue/IDEA-98425 (başka fikirleri de olabilir)

IntelliJ 15+'yi düzeltin

IntelliJ 15 ile bu sefer tekrar karşılaştık, artık "almak için maven3 kullan" seçeneği mevcut değil. Bunun nedeni bazen IntelliJ'in "maven bağımlılıklarını doğru ayrıştırmamasıdır" ve eğer bunlardan birini doğru ayrıştıramıyorsa , görünüşe göre hepsinden vazgeçer . Maven projeleri araç penceresini açarak durumun bu olup olmadığını anlayabilirsiniz (Görünüm menüsü -> Araç Pencereleri -> Maven Projeleri). Sonra maven projelerinizden birini ve bağımlılıklarını genişletin. Bağımlılıkların tümü kırmızı renkle çizilirse, "Houston, bir sorunumuz var" resim açıklamasını buraya girin

Gerçek başarısızlığı aslında proje adının üzerinde gezdirerek görebilirsiniz .

resim açıklamasını buraya girin

Benim durumumda "Sorunlar: XXX için sürüm yok" veya "Yapay nesne org.xy.z için tanımlayıcı okunamadı" ref: https://youtrack.jetbrains.com/issue/IDEA-128846 ve https: // yazıyordu. youtrack.jetbrains.com/issue/IDEA-152555

Bu durumda, ilişkili bir pom dosyası olmayan bir kavanozla uğraşıyordum (bizim maven nexus deposunda ve ayrıca yerel depomda). Bu da sizin probleminizse, "şu anda geçici çözüm: kendi kodunuzda bu kavanozdan sınıflar kullanmanız gerekmiyorsa (örneğin yalnızca geçişli bir maven bağımlılığı), aslında pom'dan yorum yapmaktan kurtulabilirsiniz. (geçici olarak), maven projesi yeniden yükleme ve sonra uncomment.Bu noktadan sonra IntelliJ eski çalışma bağımlılıklarını "hatırlar". Bir maven geçişli dışlama eklemek, geçici bağımlılık zincirinden içeri girerseniz geçici olarak da yapabilir. "

Yardımcı olabilecek başka bir şey, paketlenmiş 3.0.5'ten daha yeni bir maven sürümü kullanmaktır. Bunu varsayılan olarak kullanmak üzere ayarlamak için tüm intellij pencerelerinizi kapatın, ardından tercihleri ​​açın -> derleme, yürütme ve dağıtım -> derleme araçları -> maven ve maven giriş dizinini değiştirmek için "Varsayılan olarak projeyi "ayarladığınızda üstte, ancak belirli bir proje için de ayarlayabilirsiniz, ancak ayarladıktan sonra" yeniden içe aktardığınız sürece ".

Önbellekleri Temizle

Intellij önbellek klasörlerinizi (Windows: HOMEPATH /. {IntellijIdea, IdeaC} XXX linux ~ / .IdeaIC15) silme ve / veya IntelliJ'in kendisini kaldırma ve yeniden yükleme. Bu, Dosya [menü] -> bölümüne giderek de yapılabilir Invalidate Caches / Restart.... Tıklayın invalidate and restart. Bu, tüm projenizi yeniden endeksleyecek ve IntelliJ ile izlemesi zor birçok sorunu çözecektir.


2
Garip bir şekilde neredeyse tüm diğer gönderiler bu sorunu çözmek için "Projeyi içe aktarmak için Maven3'ü kullan" seçeneğini kontrol etmenizi önerirken, aslında bu işareti kaldırmak benim için sorunu çözdü. Neden? Bilmiyorum. Teşekkürler!
janhink

3
V14 ultimate'ta harici bir makineyi seçtim ve her şey tekrar çalışmaya başladı.
AlikElzin-kilaka

@ AlikElzin-kilaka Maven giriş dizinini harici maven giriş olarak değiştirmek çok yardımcı olur. IDEA'yı v14 ultimate'a güncelledikten sonra, "Hiçbir tomcat6 eklentisi bulunamadı" nedeniyle projemi IDEA'da başlatamadım, ancak mvn komutunu kullanarak projeyi başlatabilirim ve maven ana dizinini harici bir dizine değiştirerek
çözdüm

IntelliJ 2016.2.1'de, otomatik içe aktarma işleminin yığınımızın Maven home directorykullandığı sürüme (3.3.9) değiştirilmesini devre dışı bırakmak , sorunu benim için düzeltti.
Wheeler

1
Değişen maven home directorydan Bundle (Maven 3)benim maven yüklü olduğu yoluna .../maven/3.6.1/libexecbenim için çalıştı
Marcelo Xavier

37

Projeyi alırken pom.xmlproje dizini yerine seçin . İşe yaramalı.


1
Maven Projects penceresinin altındaki "Tüm maven projelerini yeniden
içe aktar

1
Belki de bu en zarif, temiz, çözümdür (ve biraz garip intellij bunu tahmin
etmede

IntelliJ Community Edition 2019 ile benim için de çalışıyor. Böyle kolay bir çözüm için teşekkürler. :)
asymmetryFan

22

IntelliJ IDEA'daki Maven Projects panelinden projeyi Yeniden İçe Aktarmayı deneyin. pom.xmlOtomatik olarak tanımlı tüm bağımlılıkları indirmeli ve yapılandırmalıdır .

İndirme herhangi bir nedenle IDEA'dan çalışmazsa mvn install, komut satırından deneyin ve bağımlılıkların getirilip getirilemeyeceğini görün.

Elbette gerekli tüm bağımlılıklar ve özel depolar doğrudan pom.xmldosyada tanımlanmalıdır .


14

IntelliJ 2016-2.4 için (ve diğer yeni ish sürümlerine inanıyorum):

Görünüm> Araç Pencereleri> Maven Projects

Yeni ortaya çıkan araç çubuğunda Maven ayarları'nı (araç setinin simgesi) seçin.

Bu ekran açıldığında Maven menüsünü genişletin ve 'İçe aktarma'yı tıklayın

Burada, "Maven projelerini otomatik olarak içe aktar" ı tıklayın. Ayrıca, 'İthalatçı için JDK' seçeneğinin kullanmak istediğiniz JDK sürümüyle eşleştiğinden emin olun.

Tamam'ı tıklayın. Şimdi pom.xml'nizdeki kırmızı bağımlılığa gidin, kırmızı ampulü seçin ve 'Maven endekslerini güncelle'yi tıklayın.


1
ithalatçı için doğru JDK'yı seçmek bana yardımcı oldu. Ayrıca mvn fikri çalıştırmak zorunda kaldım: temiz fikir: son sorunları kapatmak için fikir.
Vincent F

9

Bana ne yardımcı oldu:

Gezinme: Ayarlar | Oluşturma, Yürütme, Dağıtım | Uzman

"Maven giriş dizini" ni belirtin - maven'i kurduğunuz yer


7

Belirli maven modülleri derlenmiyorsa pom.xml dosyalarının "yok sayılan dosyalar" listesinde olup olmadığını kontrol edin. IntelliJ'de

tercihler -> proje ayarları -> maven -> yok sayılan dosyalar

ve ilgili pom.xml dosyasının yoksayılıp yoksayılmadığını kontrol edin.


5

IntelliJ Idea, Dosya> Diğer Ayarlar> Varsayılan Ayarlar ...> Maven (Tercihler)> İçe Aktar veya | Preferences > Maven > Importing

resim açıklamasını buraya girin

Konsolda Otomatik İçe Aktarmayı Etkinleştir'i tıklayın .

resim açıklamasını buraya girin


4

Yeni bir proje oluşturduğunuzda seçeneği seçmeniz yeterlidir:

...
Projeyi dış modelden içe aktar
Mevcut dış model (Eclipse, Maven ...) üzerine IDEA proje yapısı oluşturun
...

Oradan oldukça ileri doğru bulacaksınız.
Ve sizin durumunuzda projenizi kapatabilir ve yeni bir tane oluşturabilirsiniz. Bir Maven projesi yapmak için projenizi geçersiz kılacak dizini seçin.


Kabul. OP'nin projeyi yanlış bir şekilde ithal ettiği neredeyse kesin.
kaqqao

4

Aynı yolu birkaç kez içe aktarırsanız Maven bağımlılıklarını içe aktarmak işe yaramayabilir. Bu, varolan bir maven projesini içe aktardıktan sonra otomatik olarak gerçekleşebilir. Bunun neden olduğunu anlayamıyorum, bu yüzden bunun bir hata olduğunu düşünmeye meyilliyim.

Örneğin, projem

hibernate
  src/main
  src/test

üç yol üst düğümler olarak içe aktarılabilir:

hibernate
src/main
src/test

Böyle bir durumda, bağımlılıklar doğru gibi görünür, ancak gereksiz yolları (bu durumda src/mainve src/test) kaldırana kadar kullanılmazlar . Bunu yaptıktan sonra yenileyin ve Oluştur> Projeyi Yeniden Oluştur'u tıklayın. IDEA bağımlılıkları toplayacaktır.

Bu sorunun bir belirtisi, bir kitaplığı (sorunun ikinci ekran görüntüsü) el ile kontrol ettiğinizde IDEA'nın çoğaltılmış bir yol konusunda sizi uyarmasıdır.

İhtiyacınız olması durumunda bağımlılıkları yeniden okumanın birkaç yolu vardır. "Maven Projeleri" sekmesine giderseniz, sekmenin sol üst köşesinde "Tüm Maven Projelerini Yeniden İçeri Aktar" simgesi bulunur. IDEA'nın karıştığından şüpheleniyorsanız Dosya> Önbellekleri Geçersiz Kıl'ı tıklayabilirsiniz.


3

Proje yapınıza gidin, proje Ayarları, Modüller altında bağımlılıklar tablosunu seçin. Her bağımlılık için kapsamı 'Test' yerine 'Compile' olarak değiştirin.


3

Projeyi yeniden içe aktarın. Eğer maven eklentisini kurarsanız bunu kullanabilirsiniz.

Projeye sağ tıklayın -> Maven -> Reimport


3

İçin Belirtilen İlk onay yolunu Kullanıcı Ayarları dosyasında: in Ayarlar -> Yapı, Yürütme, Kalkınma -> Yapı Araçlar -> Maven . Alan , makinenizin settings.xml dosyasının yolunu içermelidir . Ayrıca settings.xml dosyasının doğru uzak havuz yolu olmalıdır.


Bu benim için çalıştı, settings.xml dosyasında, <mirror> etiketine iç içe yerleştirilmiş <url> etiketi için giriş tarihi geçmişti. Güncellenmiş giriş değerini elde etmek için meslektaşlarımla görüştüm. ~ / .M2 / settings.xml dosyasını değiştirdim, intelliJ'i kapattım ve tekrar başlattım. Yeniden başladıktan sonra, başka bir şey yapmadan, maven görünümünde kırmızı alt çizgiler yok oldu. Garip bir şekilde, vurgulanan kök bağımlılıkların çoğu, bu düzeltmeyi yapmadan önce ve sonra Proje görünümünün "Dış Kütüphaneler" girişinde her zaman mevcuttu.
Steve T

3

Benzer bir sorunum vardı, benim durumumda settings.xmlIntelliJ'den seçilmeyen bir özel kullanıyorum .

Çözüm:
File > Settings > Build, Execution, Deployment > Maven: User settings file (özel ayarlarımı burada seçtim. Xml).


3

Aynı sorunu yaşadım ve burada belirtilen tüm cevapları denedim, hiçbiri işe yaramadı.

Basit çözüm, proje klasörünüze gidin ve tüm .idea ve .iml dosyalarını silin ve IntelliJ ide'yi yeniden başlatın. İşe yarıyor. Ayarlarla hiçbir şey yapmanıza gerek yok.


2

IntelliJ 2016.3.X sürümünde bazı alt bağımlılıkların çözülememesi sorunuyla karşılaştım. Bu değiştirerek sabit olabilir Maven home directory> Yapı, Yürütme, Dağıtım> Yapı Araçlar> Maven dan Ayarlar bölümünde Bundled (Maven 3)etmek /usr/share/maven.

Bundan sonra tüm alt bağımlılıklar önceki IntelliJ sürümlerinde olduğu gibi çözüldü.


2

Maven - Reimport benim için çalışmadı. STS'de (Eclipse) Spring projem var ve benim çözümüm IDEA'ya şu şekilde proje aktarmak:

1) Dosya - Yeni - Mevcut Kaynaklardan Proje ... - dizin seçin - Eclipse'yi seçin.
2) Maven autoimport'u ayarlarda true olarak ayarlayın.
3) Daha sonra pom.xml dosyasına sağ tıklayın ve Maven Projesi Olarak Ekle'yi seçin.

Bundan sonra her şeyi ithal etti.


2

Macbook'umla benzer bir sorun yaşadım, sadece küçük bir değişiklik yaptım pom.xmlve tüm bağımlılıkları indirmeye başladı:

Daha önceki bağımlılıklar Windows makinem için aşağıdaki gibi yazılmıştır:

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

Sadece <dependencies>ve </dependencies>etiketleri kaldırdım ve tüm bağımlılıkları indirmeye başladı:

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

Senin için işe yarayıp yaramayacağından emin değilim .. ama benim için iyi çalıştı.

Teşekkürler


1

Sağ alt köşede "2 işlem çalışıyor ..." veya benzeri bir şey yazıyorsa, bunun tamamlanmasını beklemeniz gerekebilir, çünkü tüm kavanozları indirmek zaman alabilir.


1

Settings.xml dosyamı doğru ayna yapılandırmasıyla güncelleyerek bu sorunu çözdüm, intellij, maven modülü her içe aktarıldığında depodan meta veri indirmeye çalışacak gibi görünüyor.


1

Benim için işe yarayanı eklemek için biraz kaçırma:

Maven ProjectsIDE'nin sağ kenarındaki kenar çubuğuna gidin ve bağımlılıklarınızın modülünüzün altında doğru bir şekilde listelendiğini doğrulayın. Var olduklarını varsayarak, IDEA'dan o zaman yeniden içe aktarmasını isteyin (üstteki ilk düğme, saat yönünün tersine bir daire oluşturan iki mavi ok gibi görünür).

Bunu yaptıktan ve IDEA'nın projeyi benim için yeniden yüklemesine izin verdikten sonra, tüm bağımlılıklarım sihirli bir şekilde anlaşıldı.

Referans için: bu ile oldu IDEA 13.1.2


1

Aynı sorunla karşılaştım ve sorunu çözmeyen önerilen her şeyi denedim, Intellij 13.1.3 sürümünü kullanıyordum

Sonunda, düzeltmeye çalışmak için birkaç saatten fazla zaman geçirdikten sonra, yükseltilmiş bir sürümü denemeye karar verdim ve projeyi 14.1.4 sürümünde açtım ve bu da sorunu çözdü. Önceki sürümde olası bir hata olarak düşünürdüm.

Umarım bu yardımcı olur!


1

Proje Ayarları -> Modüller listesinden gereksiz modülleri kaldırarak çözebildim .

resim açıklamasını buraya girin

Bu ek modüllerin IntelliJ projesini proje klasöründen içe aktararak (pom.xml açmak yerine) oluşturduğumda IntelliJ IDEA tarafından otomatik olarak oluşturulduğu ortaya çıkıyor. Ardından projeyi Maven projesi olarak ilan ettikten sonra uygun modüller oluşturuldu ve mevcut modüller onlarla çelişiyordu. Proje oluşturma sırasında bu modülleri hariç tutmak da mümkündür.


1

.İdea klasörünü proje dizininden silmek ve sonra projeyi Maven projesi olarak yeniden almak benim için işe yarayan şeydi.


1

Benim durumumda, modüllerden biri nedense yok sayıldı. Bu sorunu çözmek için: Sorunlu modüle sağ tıklayın ve "Unignore Projects" i seçin.

unignore proje örneği


1

Benim durumumda, MAVEN tarafından kullanılan JAVA yolu makinede yapılandırıldığı gibi JAVA_HOME olarak ayarlanmadı. Bu nedenle, bağımlılıkları indirmeye bile çalışmıyordu. Bu sorunu çözen adımları izledim,

  1. JAVA yolu için kontrol edildi, Ayarlar >> Derleme >> Derleme Araçları >> İçeri Aktarma >> İthalatçı için JDK . JAVA_HOME adresine yönlendirdi.

  2. mvn clean install -U

    Bağımlılıkları indirmeye zorlamak için yukarıdaki komut kullanılır.

  3. İthal Maven Projeleri


0

Her şey başarısız olursa, yerel .m2 deponuzdaki jar dosyasının gerçekten geçerli ve bozuk olup olmadığını kontrol edin. Benim durumumda, dosya tam olarak indirilmemişti.


0

Maven'de, dependsencyManagement xml bölümünü kaldırdığımda bağımlılıklar benim için dahil edildi ve sadece proje bölümü altında doğrudan bağımlılıklar vardı


0

Sorun, pom.xml'de bağımlılıklarınızı listelemenize rağmen, projenizi çalıştırdığınızda IntelliJ IDEA'nın bu bağımlılıkları yeniden oluşturmaması gibi görünüyor.

Benim için işe yarayan şuydu:

'Çalıştır' -> 'Yapılandırmaları Düzenle ...' seçeneğine gidin, uygulamanızı bulun, "Başlamadan önce:" bölümünün genişletildiğinden emin olun, yeşil artı işaretini tıklayın ve "Proje Oluştur" u seçin.

resim açıklamasını buraya girin


0

pom.xml dosyasındaki yapı etiketinden sonra bu kod satırlarını ekleyerek madeni düzeltmeyi başardım, çalıştığım projeden karşılaştırdım ve fark olduğunu keşfettim, şimdi tamamen iyiyim.

<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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.