Importuj zależności Maven do IntelliJ IDEA

208

Mam małe pytanie dotyczące IntelliJ IDEA 11. Właśnie zaimportowałem projekt z subversion - jest to projekt maven. Ale mam problem z zależnościami biblioteki maven, dlatego nie mogę automatycznie uwzględnić wszystkich zależności maven - IDEA pokazuje błędy zależności tylko wtedy, gdy otwieram tę klasę / To, co otrzymuję:

wprowadź opis zdjęcia tutaj

Chcę więc, aby wszystkie zależności były dodawane automatycznie - czy to możliwe, czy też muszę przejrzeć wszystkie pliki klas, aby zidentyfikować i dodać zależności od raju ?!

AKTUALIZACJA: Po wprowadzeniu pewnych modyfikacji znalazłem sposób, aby rozwiązać problem w jakiś sposób. To jest to co zrobiłem: wprowadź opis zdjęcia tutaj

ale myślę logicznie, że nie będzie uwzględniał i sprawdzał nowych zależności z wyprzedzeniem?! ... Czy jest jakiś obszar ustawień dla tego w intelliJ - zależności automatycznego eksportu do ścieżki klas?!

Zaur Gulijew
źródło
9
Pobiera wszystkie zależności, ale wydaje się, że nie dodaje ich wszystkich do ścieżki klas ...
Zaur Guliyev,
3
a innym problemem jest to, że intelliJ pokazuje mi podkreślone na czerwono błędy tylko wtedy, gdy otwieram ten plik Java ...
Zaur Guliyev
4
Jednym z przykładów, w których pojawia się ta czerwona linia, jest posiadanie zależności SNAPSHOT z klasyfikatorem, w której istnieje nowsza wersja zależności bez klasyfikatora. Jest to całkowicie legalne w Maven, ale IntelliJ wprawia w zakłopotanie próbując znaleźć ścieżkę do pliku fizycznego w lokalnym repozytorium Maven.
RCross
4
Do Twojej wiadomości może się to zdarzyć w 15.0.2. Właśnie mi się przydarzyło. Musiałem zdmuchnąć mój plik .iml i folder .idea i ponownie zaimportować. Niesamowicie frustrujące b / c Spędziłem 2 godziny walcząc z nim i ostatecznie straciłem wszystkie moje starannie wykonane konfiguracje biegu.
Kevin Pauli,
3
@ KevinPauli nie trzeba w tym celu usuwać plików projektu IDEA, możesz po prostu „Ponownie zaimportować wszystkie projekty Maven” w zakładce „Projekty Maven” w celu ręcznego ponownego importu.
Zaur Gulijew

Odpowiedzi:

282

IntelliJ powinien automatycznie pobierać i dodawać wszystkie zależności do ścieżki klas projektu, o ile Twoja POM jest zgodna i wszystkie zależności są dostępne.

Podczas importowania projektów Maven do IntelliJ zwykle pojawia się okno informacyjne z pytaniem, czy chcesz skonfigurować Automatyczny import dla projektów Maven. Oznacza to, że jeśli dokonasz jakichkolwiek zmian w POM, zmiany te zostaną wczytane automatycznie.

Możesz włączyć taką funkcję, przechodząc do Plik> Ustawienia> Maven> Importowanie, jest pole wyboru z napisem „Importuj automatycznie projekty Maven”.

Jeśli to nie pomoże, sugeruję wykonanie pełnego czyszczenia i zacząć od nowa:

  • Zamknij okno projektu (i IntelliJ) i usuń wszystkie *.imlpliki i wszystkie .ideafoldery (powinien być jeden na moduł)
  • Uruchom mvn clean installz wiersza poleceń
  • Ponownie zaimportuj projekt do IntelliJ i zwróć uwagę, gdy pojawi się monit o włączenie automatycznego importu

Aktualizacja IntelliJ 2016 :

Ustawienie Importuj automatycznie projekty Maven zostało przeniesione do Kompilacja, wykonanie, wdrożenie> Narzędzia do budowy> Maven> Importowanie w preferencjach IntelliJ.

Alonso Dominguez
źródło
więc twoim rozwiązaniem było oznaczenie zależności jako eksportowane? to jest dziwne! Często używam IntelliJ i Maven i żaden z moich projektów (niektóre z nich to wiele projektów) nie ma włączonej funkcji eksportu ... czy to wersja Community czy Ultimate?
Alonso Dominguez,
1
Jest to wersja Ultimate, ale projekt, który zaimportowałem, został zbudowany na platformie Eclipse - dzięki czemu włączono .classpath, ale IntelliJ używa .iml - Myślę więc, że logiczne jest włączenie tych bibliotek po raz pierwszy, jeśli ten projekt nie miał .iml plik przed ...?!
Zaur Guliyev
1
och, ok - czy próbowałeś go zaimportować jako projekt Maven, a nie Eclipse? Nie jestem przyzwyczajony do wpisywania powiązanych plików IDE do moich repozytoriów źródłowych podczas pracy z projektami Maven: jeśli jest to projekt Maven, wtedy Maven rządzi
Alonso Dominguez
2
Możesz włączyć Automatyczny import w preferencjach / ustawieniach. Otwórz preferencje / ustawienia i wyszukaj „Automatycznie importuj projekty maven”. jest w obszarze Kompilacja, wykonanie, wdrożenie> Narzędzia do budowy> Maven> Importowanie
Seyed Jalal Hosseini
2
@JustinBlank nie jest tym zaskoczony, biorąc pod uwagę, że jest to odpowiedź z 2012 roku. Ustawienia nadal istnieją, po prostu zostały przeniesione gdzie indziej (odpowiedź została zaktualizowana).
Alonso Dominguez
66

Napraw przed IntelliJ 14

Plik [menu] -> Ustawienia -> maven -> importowanie i odznaczenie „użyj maven3 do zaimportowania projektu”

ref: http://youtrack.jetbrains.com/issue/IDEA-98425 (który może mieć również kilka innych pomysłów)

Napraw IntelliJ 15+

Znowu się z tym spotkałem, tym razem z IntelliJ 15, który nie ma już opcji „Użyj maven3 do importowania”. Przyczyną było to, że czasami IntelliJ „nie analizuje poprawnie zależności od maven” i jeśli nie może poprawnie przeanalizować jednej z nich, najwyraźniej poddaje się wszystkim . Możesz stwierdzić, czy tak jest, otwierając okno narzędzia projektów maven (menu Widok -> Narzędzia Windows -> Projekty Maven). Następnie rozwiń jeden ze swoich projektów maven i jego zależności. Jeśli wszystkie zależności są podkreślone na czerwono, „Houston, mamy problem”. wprowadź opis zdjęcia tutaj

Rzeczywistą awarię można zobaczyć, przesuwając kursorem myszy nad samą nazwą projektu.

wprowadź opis zdjęcia tutaj

W moim przypadku napisano: „Problemy: brak dostępnych wersji dla XXX” lub „Nie można odczytać deskryptora dla artefaktu org.xy.z”, patrz: https://youtrack.jetbrains.com/issue/IDEA-128846 i https: // youtrack.jetbrains.com/issue/IDEA-152555

Wygląda na to, że w tym przypadku miałem do czynienia ze słoikiem, który nie miał skojarzonego pliku pom (w naszym repozytorium nexus maven, a także w moim lokalnym repozytorium). Jeśli to też jest twój problem, „pilne obejście: jeśli tak naprawdę nie musisz używać klas z tego słoika we własnym kodzie (na przykład tylko zależność przechodnia od maven), możesz naprawdę uciec od komentowania go od pom (tymczasowo), przeładowanie projektu maven, a następnie anulowanie komentarza. Jakoś po tym punkcie IntelliJ „zapamiętuje” jego stare działające zależności. Dodanie wykluczenia przechodniego maven może również zrobić to tymczasowo, jeśli napotkasz na łańcuch przechodni zależności. „

Inną rzeczą, która może pomóc, jest użycie „nowszej wersji” maven niż dołączona wersja 3.0.5. Aby ustawić go jako domyślny, zamknij wszystkie okna intellij, a następnie otwórz preferencje -> kompilacja, wykonanie i wdrożenie -> narzędzia do budowania -> maven i zmień katalog osobisty maven, powinien powiedzieć „Domyślnie projektu ”u góry, kiedy to dostosujesz, ale możesz go również dostosować do konkretnego projektu, o ile„ importujesz ”po dostosowaniu.

Wyczyść skrzynki

Usuwanie folderów pamięci podręcznej intellij (Windows: HOMEPATH /. {IntellijIdea, IdeaC} XXX linux ~ / .IdeaIC15) i / lub odinstalowywanie i ponowne instalowanie samego IntelliJ. Można to również zrobić, przechodząc do menu Plik [menu] -> Invalidate Caches / Restart.... Kliknij invalidate and restart. Spowoduje to ponowne indeksowanie całego projektu i rozwiązanie wielu trudnych do wyśledzenia problemów z IntelliJ.

rogerdpack
źródło
2
O dziwo, prawie co drugi post zaleca sprawdzenie opcji „Użyj Maven3 do zaimportowania projektu”, aby rozwiązać ten problem, a jednocześnie odznaczenie go rozwiązało problem. Czemu? Nie wiem Dzięki!
janhink
3
W wersji 14 ostatecznej wybrałem zewnętrznego raju i wszystko wróciło do działania.
AlikElzin-kilaka
@ AlikElzin-kilaka Zmiana katalogu domowego maven na zewnętrzny maven home bardzo pomaga. Po zaktualizowaniu IDEA do wersji v14 ultimate nie mogłem uruchomić projektu w IDEA z powodu „Nie znaleziono wtyczki tomcat6”, ale mogę uruchomić projekt za pomocą komendy mvn i zmienić katalog
główny
W wersji IntelliJ 2016.2.1 wyłączenie dla mnie automatycznego importu zmieniającego Maven home directorywersję do wersji używanej przez nasz stos (3.3.9) rozwiązało problem.
Wheeler,
1
Zmiana maven home directoryz Bundle (Maven 3)na ścieżkę, na której jest zainstalowany mój raj, .../maven/3.6.1/libexeczadziałała dla mnie
Marcelo Xavier
37

Podczas importowania projektu wybierz pom.xmlzamiast katalogu projektu. To powinno działać.

chichi
źródło
1
kiedyś kliknij opcję „Reimportuj wszystkie projekty maven” w oknie Projekty Maven
vikramvi
1
Być może jest to najbardziej eleganckie, czyste i rozwiązanie (i nieco niezręczne intellij nie pomaga ci w odgadnięciu tego)
matanster
Pracuje również dla mnie, dzięki IntelliJ Community Edition 2019.3.4. Dziękuję za tak łatwe rozwiązanie. :)
asymetria
22

Spróbuj ponownie zaimportować projekt z panelu Projekty Maven w IntelliJ IDEA. Powinien automatycznie pobrać i skonfigurować wszystkie zależności zdefiniowane w twoim pom.xml.

Jeśli z jakiegoś powodu pobieranie nie działa z IDEA, spróbuj mvn installz wiersza poleceń i sprawdź, czy można pobrać zależności.

Oczywiście wszystkie wymagane zależności i wszelkie niestandardowe repozytoria muszą być zdefiniowane bezpośrednio w pom.xmlpliku.

CrazyCoder
źródło
14

W przypadku IntelliJ 2016-2.4 (i uważam, że inne nowe wersje):

Widok> Narzędzie Windows> Projekty Maven

Na nowo ujawnionym pasku narzędzi wybierz Ustawienia Maven (ikona zestawu narzędzi).

Po otwarciu tego ekranu rozwiń menu Maven i kliknij „Importowanie”

Tutaj kliknij „Automatycznie importuj projekty Maven”. Upewnij się również, że opcja „JDK for Importer” odpowiada wersji JDK, której chcesz użyć.

Kliknij OK. Teraz przejdź do czerwonej zależności w pliku pom.xml, wybierz czerwoną żarówkę i kliknij „Aktualizuj wskaźniki Maven”.

Paul Back
źródło
1
wybranie właściwego JDK dla importera pomogło mi. Musiałem także uruchomić pomysł mvn: czysty pomysł: pomysł zamknięcia ostatnich problemów.
Vincent F
9

Co mi pomogło:

Nawigacja: Ustawienia | Kompilacja, wykonanie, wdrożenie | Maven

Podaj „Katalog główny Maven” - miejsce, w którym zainstalowałeś maven

Anatolii Stepaniuk
źródło
7

Jeśli niektóre moduły maven się nie kompilują, sprawdź, czy ich plik pom.xml znajduje się na liście „ignorowanych plików”. W IntelliJ goto

preferencje -> ustawienia projektu -> maven -> zignorowane pliki

i sprawdź, czy powiązany plik pom.xml jest ignorowany.

Udo
źródło
5

Otwórz IntelliJ Idea, przejdź do Plik> Inne ustawienia> Ustawienia domyślne ...> Maven (Preferencje)> Importowanie lub | Preferences > Maven > Importing

wprowadź opis zdjęcia tutaj

Kliknij opcję Włącz automatyczny import w konsoli.

wprowadź opis zdjęcia tutaj

Prashanth Sams
źródło
4

Podczas tworzenia nowego projektu wystarczy wybrać opcję:

...
Importuj projekt z modelu zewnętrznego
Utwórz strukturę projektu IDEA na istniejącym modelu zewnętrznym (Eclipse, Maven ...)
...

Stamtąd znajdziesz to całkiem prosto.
W twoim przypadku możesz zamknąć swój projekt i po prostu utworzyć nowy. Wybierz katalog swojego projektu, który go zastąpi, dzięki czemu będzie to projekt Maven.

Markus Coetzee
źródło
Zgoda. Jest prawie pewne, że OP po prostu nieprawidłowo zaimportował projekt.
kaqqao
4

Importowanie zależności Maven może nie działać, jeśli kilkakrotnie importujesz tę samą ścieżkę. Może się to zdarzyć automatycznie po zaimportowaniu istniejącego projektu maven. Nie mogę zrozumieć, dlaczego tak się dzieje, więc jestem skłonny myśleć, że to błąd.

Na przykład, jeśli mój projekt to

hibernate
  src/main
  src/test

trzy ścieżki można zaimportować jako górne węzły:

hibernate
src/main
src/test

W takim przypadku zależności wydają się być prawidłowe, ale nie zostaną one użyte, dopóki nie usuniesz zbędnych ścieżek (w tym przypadku src/maini src/test). Gdy to zrobisz, odśwież i kliknij Buduj> Odbuduj projekt. IDEA przejmie zależności.

Objawem tego problemu jest to, że IDEA ostrzega o powielonej ścieżce podczas ręcznego sprawdzania biblioteki (drugi zrzut ekranu w pytaniu).

Istnieje kilka sposobów ponownego odczytania zależności w razie potrzeby. Jeśli przejdziesz do zakładki „Projekty Maven”, w lewym górnym rogu zakładki znajduje się ikona „Reimportuj wszystkie projekty Maven”. Jeśli podejrzewasz, że IDEA się pomyliło, możesz kliknąć Plik> Unieważnij pamięć podręczną.

Jano
źródło
3

Przejdź do struktury projektu, w obszarze Ustawienia projektu, moduły wybierz tabelę zależności. Dla każdej zależności zmień zakres z „Testuj” na „Kompiluj”.

Pączek
źródło
3

Ponownie zaimportuj projekt. Jeśli zainstalujesz wtyczkę maven, możesz jej użyć.

Kliknij prawym przyciskiem myszy projekt -> Maven -> Reimport

Damith Ganegoda
źródło
3

Pierwsza ścieżka sprawdzania Określona dla pliku ustawień użytkownika: w Ustawieniach -> Kompilacja, wykonanie, programowanie -> Kompilacja narzędzi -> Maven . Pole powinno mieć ścieżkę do pliku settings.xml twojego maven. Również plik settings.xml powinien mieć poprawną ścieżkę do zdalnego repozytorium.

amol13
źródło
Dla mnie to zadziałało: w pliku settings.xml wpis znacznika <url> zagnieżdżonego w znaczniku <mirror> był nieaktualny. Rozmawiałem z kolegami, aby uzyskać zaktualizowaną wartość wejścia. Dokonałem zmiany w ~ / .m2 / settings.xml, zamknąłem intelliJ i uruchomiłem ponownie. Po ponownym uruchomieniu, nie robiąc nic innego, czerwone podkreślenia pojawiające się w widoku maven zniknęły. O dziwo, większość wyróżnionych zależności głównych była zawsze obecna we wpisie „Biblioteki zewnętrzne” w widoku projektu, zarówno przed, jak i po wykonaniu tej poprawki.
Steve T
3

Miałem podobny problem, w moim przypadku używam niestandardowego, settings.xmlktóry nie został wybrany z IntelliJ.

Rozwiązanie:
File > Settings > Build, Execution, Deployment > Maven: User settings file (wybierz tutaj moje niestandardowe ustawienia.xml).

petre
źródło
3

Miałem ten sam problem i wypróbowałem wszystkie wymienione tutaj odpowiedzi, żadne nie zadziałało.

Prostym rozwiązaniem jest przejście do folderu projektu i usunięcie wszystkich plików .idea i .iml i ponowne uruchomienie idei IntelliJ. To działa. Nie musisz nic robić z ustawieniami.

Yashaswi NP
źródło
2

Natknąłem się na problem polegający na tym, że niektórych zależności zależnych nie można rozwiązać w IntelliJ 2016.3.X. Można to naprawić, zmieniając Maven home directoryw Ustawienia> Kompilacja, wykonanie, wdrożenie> Narzędzia kompilacji> Maven z Bundled (Maven 3)na /usr/share/maven.

Następnie wszystkie zależności zostały rozwiązane, jak w poprzednich wersjach IntelliJ.

Johannes Stadler
źródło
2

Maven - Reimport nie działało dla mnie. Mam projekt Spring w STS (Eclipse) i moim rozwiązaniem jest zaimportować projekt do IDEA w następujący sposób:

1) Plik - Nowy - Projekt z istniejących źródeł ... - wybierz katalog - wybierz Eclipse.
2) Ustaw Autoimport Maven na true w ustawieniach.
3) Następnie kliknij pom.xml prawym przyciskiem myszy i wybierz Dodaj jako projekt Maven.

Następnie zaimportował wszystko.

Svitlana Onish
źródło
2

Miałem podobny problem z moim komputerem Macbook, po prostu dokonałem niewielkiej zmiany pom.xmli zaczął pobierać wszystkie zależności:

Wcześniejsze zależności zostały napisane jak poniżej dla mojego komputera z systemem Windows:

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

Ja po prostu usunięte <dependencies>i </dependencies>tagi i zaczęło pobierając wszystkie zależności:

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

Nie jestem pewien, czy to zadziała dla ciebie czy nie ... ale działało dobrze dla mnie.

Dzięki

Amit Joshi
źródło
1

Jeśli w prawym dolnym rogu jest napisane „2 procesy działają ...” lub podobne, być może trzeba poczekać, aż to się skończy, ponieważ pobranie wszystkich słoików może zająć trochę czasu.

djechlin
źródło
1

Rozwiązałem ten problem, aktualizując mój plik settings.xml poprawną konfiguracją kopii lustrzanej. Wygląda na to, że intellij będzie próbował pobierać metadane z repozytorium za każdym razem, gdy moduł maven zostanie zaimportowany.

Abel Zhan
źródło
1

Trochę porwania, aby dodać to, co skończyło się dla mnie działaniem:

Przejdź do Maven Projectspaska bocznego po prawej stronie IDE i sprawdź, czy Twoje zależności są poprawnie wymienione w module pod nim. Zakładając, że tak, poproś IDEA o ponowne zaimportowanie (pierwszy przycisk u góry wygląda jak dwie niebieskie strzałki tworzące okrąg przeciwnie do ruchu wskazówek zegara).

Gdy to zrobiłem i pozwoliłem IDEA ponownie załadować projekt dla mnie, wszystkie moje zależności zostały magicznie zrozumiane.

Dla odniesienia: to było z IDEA 13.1.2

Sunspar
źródło
1

Napotkałem ten sam problem i wypróbowałem wszystko, co nie rozwiązało problemu, korzystałem z wersji Intellij 13.1.3

W końcu, po spędzeniu kilku godzin na próbach naprawy, postanowiłem wypróbować zaktualizowaną wersję i otworzyłem projekt w wersji 14.1.4, co ostatecznie rozwiązało problem. Uważam to za prawdopodobny błąd w poprzedniej wersji.

Mam nadzieję, że to pomoże!

sjaiswal
źródło
1

Udało mi się to rozwiązać, usuwając niepotrzebne moduły z Ustawień projektu -> Lista modułów .

wprowadź opis zdjęcia tutaj

Okazuje się, że te dodatkowe moduły zostały automatycznie utworzone przez IntelliJ IDEA, kiedy stworzyłem projekt IntelliJ, importując go z folderu projektu (zamiast otwierając plik pom.xml). Następnie, po zadeklarowaniu projektu jako projektu Maven, stworzono odpowiednie moduły i istniejące moduły powodowały konflikt z nimi. Możliwe jest również wykluczenie tych modułów podczas tworzenia projektu.

elyor
źródło
1

Udało mi się usunąć folder .idea z katalogu projektu, a następnie ponownie zaimportować projekt jako projekt Maven.

Janac Meena
źródło
1

W moim przypadku jeden z modułów został z jakiegoś powodu zignorowany. Aby rozwiązać ten problem: kliknij prawym przyciskiem myszy problematyczny moduł i wybierz „Unignore Projects”.

anuluj przykład projektu

KernelMode
źródło
1

W moim przypadku ścieżka do JAVA używana przez MAVEN nie została ustawiona jako JAVA_HOME, jak skonfigurowano na komputerze. Dlatego nawet nie próbowano pobrać zależności. Kroki, które wykonałem, które rozwiązały ten problem,

  1. Sprawdzono ścieżkę JAVA, Ustawienia >> Kompilacja >> Kompiluj narzędzia >> Importowanie >> JDK dla importera . Wskazał na JAVA_HOME.

  2. mvn clean install -U

    Używane powyżej polecenia, aby wymusić pobieranie zależności.

  3. Ponownie zaimportowane projekty Maven

Akanksha Sharma
źródło
0

Jeśli wszystko inne zawiedzie, sprawdź, czy plik jar w lokalnym repozytorium .m2 jest rzeczywiście prawidłowy i nie jest uszkodzony. W moim przypadku plik nie został w pełni pobrany.

Markus Barthlen
źródło
0

W maven uwzględniono zależności, kiedy usunąłem sekcję xml dependenceManagement i po prostu miałem zależności bezpośrednio w sekcji projektu

konik morski
źródło
0

Problem wydaje się polegać na tym, że pomimo umieszczenia swoich zależności w pliku pom.xml, IntelliJ IDEA nie odbudowuje tych zależności podczas uruchamiania projektu.

Dla mnie zadziałało to:

Przejdź do „Uruchom” -> „Edytuj konfiguracje ...”, znajdź aplikację, upewnij się, że sekcja „Przed uruchomieniem:” jest rozwinięta, kliknij zielony znak plus i wybierz „Kompiluj projekt”.

wprowadź opis zdjęcia tutaj

Mike Nakis
źródło
0

byłem w stanie naprawić mój, dodając te wiersze kodu po tagu kompilacji w pliku pom.xml, porównałem go z mojego działającego projektu i odkryłem, że to różnica, teraz wszystko jest w porządku.

<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
źródło