Jak skonfigurować ścieżkę kompilacji Eclipse do korzystania z zależności Maven?

124

Chciałbym skorzystać z funkcji, które zapewnia Maven do zarządzania zależnościami w projekcie. Moje krótkie zrozumienie tego, jak działa Maven, jest takie, że pozyska potrzebne pliki JAR, a następnie zbuduje projekt za pomocą tych bibliotek.

Obecnie mam prosty plik POM ustawiony jako test:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jamesgoodwin.test</groupId>
  <artifactId>com.jamesgoodwin.test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
  </build>
  <dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.0.0.RELEASE</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

Aby zarządzać zależnościami, zazwyczaj dodaję projekt lub plik JAR do ścieżki kompilacji, a następnie będę mógł zbudować swój projekt.

Ale podczas korzystania z M2Eclipse zależności nie są dodawane automatycznie do ścieżki budowania. Czy istnieje konfiguracja pozwalająca Eclipse wiedzieć, że Maven zarządza zależnościami?

James Goodwin
źródło

Odpowiedzi:

116

Jeśli klikniesz projekt prawym przyciskiem myszy, w obszarze „maven” powinna pojawić się opcja „Włącz zarządzanie zależnościami”. Otóż ​​to.

Buhb
źródło
2
m2eclipse nie robi tego domyślnie, jeśli importujesz projekt utworzony za pomocą mvn eclipse: eclipse, więc to zawsze wydaje się denerwować ludzi.
mat b
28
W rzeczywistości było to już włączone dla mojego projektu. Może dlatego, że zdecydowałem się dodać plik POM do istniejącego projektu? Wydaje się jednak, że wykonanie konfiguracji projektu Maven> Update rozwiązało problem. To również Twoja odpowiedź doprowadziła mnie w końcu do odkrycia paska narzędzi, w którym mogłem naprawić projekt. Wielkie dzięki
James Goodwin
12
Co się stanie, jeśli nie ma opcji „Maven” w menu wyświetlanym po kliknięciu prawym przyciskiem myszy, mimo że wydaje mi się, że mam zainstalowany m2eclipse?
dfrankow
85
Ach, "Configure" => "Convert to Maven Project" to twój przyjaciel!
dfrankow
2
@dfrankow co jeśli "Configure" => "Convert to Maven Project" nie istnieje ??
vasilakisfil
67

jeśli wykonasz

mvn eclipse:clean

śledzony przez

mvn eclipse:eclipse

jeśli przygotuje .classpathdla Ciebie plik zaćmienia . Oznacza to, że te polecenia są uruchamiane przeciwko maven z wiersza poleceń, tj. Poza zaćmieniem.

davek
źródło
Zauważ, że działa to poprzez użycie zmiennej classpath (M2_REPO) w celu odniesienia się do twoich zależności, nie używa m2eclipse i nie wierzę, że podnosi i zależności, które dodajesz podczas pracy nad projektem - ale jest świetny do uzyskania Początkowa konfiguracja trwa
mat b
@matt b: Musisz powtórzyć mvn eclipse: eclipse za każdym razem, gdy zmieniają się twoje zależności.
Buhb,
Aby dodać do tego, co powiedział Buhb, zrób mnv eclipse: eclipse w wierszu poleceń i odśwież projekt Eclipse za każdym razem, gdy dodasz więcej deps do pom.xml.
Binil Thomas,
5
Nie ma takiej potrzeby, gdy używasz wtyczki m2eclipse.
Pascal Thivent
3
Używam wtyczki m2eclipse i napotkałem problem po zaimportowaniu istniejącego projektu maven do Eclipse. Zrobiłem mvn eclipse:cleani mvn eclipse:eclipsefaktycznie rozwiązałem problem za mnie.
aioobe
29

Zakładam, że używasz m2eclipse, o czym wspomniałeś. Jednak nie jest jasne, czy stworzyłeś swój projekt w Eclipse, czy nie, więc postaram się objąć wszystkie przypadki.

  1. Jeśli utworzyłeś projekt „Java” w Eclipse (Ctrl + N> Projekt Java), kliknij projekt prawym przyciskiem myszy w widoku Eksploratora pakietów i przejdź do Maven> Włącz zarządzanie zależnościami (w zależności od początkowej struktury projektu możesz zmodyfikować tak, aby pasował do mavena, na przykład dodając src/javado folderów źródłowych na ścieżce budowania).

  2. Jeśli utworzyłeś „Projekt Mavena” pod Eclipse (Ctrl + N> Projekt Mavena), to powinien być już „gotowy do Mavena”.

  3. Jeśli utworzono projekt Maven poza Eclipse (ręcznie lub z archetypu), a następnie po prostu importować go w Eclipse ( kliknij prawym przyciskiem myszy na Package Explorer widoku i wybierz Importuj ...> Maven Projects ) i będzie to „Maven gotowy”.

Teraz, aby dodać zależność, kliknij projekt prawym przyciskiem myszy i wybierz Maven> Dodaj zależność ) lub edytuj pom ręcznie.

PS: unikaj używania wtyczki maven-eclipse, jeśli używasz m2eclipse. Absolutnie nie ma takiej potrzeby, będzie to zagmatwane, narobi bałaganu. Nie, naprawdę, nie używaj go, chyba że naprawdę wiesz, co robisz.

Pascal Thivent
źródło
2
Właśnie się dowiedziałem, że wtyczka maven-eclipse była przyczyną moich dziwnych nierozwiązanych błędów zależności. Dzięki!
vaughan
1
Po prostu używam EclipseNeon pobranego z oficjalnej strony .. Po utworzeniu standardowego projektu java w menu nie ma opcji Maven. Czy musimy coś zainstalować osobno, czy wszystko jest już pobrane z Neon?
Ewoks
@ Pascal Thivent, zaimportowałem projekt Maven. Nie jestem w stanie znaleźć rozwiązania tego problemu
Syed
19

Dodaj to do pliku .classpath ..

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
    </attributes>
</classpathentry>

Dzięki

Apurva Singh
źródło
1
tak, muszę to dodać ręcznie wszędzie przez ostatnie kilka lat .... dlaczego nie poprawiają wtyczek zaćmienia, aby automatycznie rozpoznawać zależności maven?
brzytwa
1
Dzięki za to rozwiązanie. To zadziałało dla mnie. Przypadkowo usunąłem pliki .project i .classpath. To rozwiązanie zadziałało, aby dodać zależności Mavena w ścieżce klas,
Tahir Mehmood
Skrót do automatycznego wygenerowania powyższego pliku .classpath to Projekt -> Maven -> Aktualizuj projekt W przeciwnym razie po prostu Alt + F5
Venkateswara Rao
Dla mnie też zadziałało. Rozwiązałem większość brakujących zależności, ale nadal mam kilka problemów, więc zastanawiam się, czy bardziej przyjazne dla użytkownika rozwiązania nie działają, ponieważ gdzieś jest mały błąd (ale to zachowanie nie pomaga w debugowaniu problemu ...)
xenoid
14

Kliknij prawym przyciskiem myszy projekt Konfiguruj> przekonwertuj na projekt Maven

Następnie możesz zobaczyć całe menu związane z Maven dla twojego projektu.

DevJav
źródło
we właściwy sposób, jeśli nie stworzyłeś projektu mvn w pierwszej kolejności
Hannes Schneidermayer
10

Podobało mi się ...

Kliknij prawym przyciskiem myszy projekt -> skonfiguruj -> przekonwertuj na projekt maven. Kliknij prawym przyciskiem myszy projekt -> maven -> dodaj zależności.

madhu_karnati
źródło
5

W Eclipse (Mars) przejdź do:

Właściwości projektu -> Maven. Upewnij się, że opcja „Rozwiąż zależności z projektów obszaru roboczego” jest wyłączona .

Thomas Beer
źródło
To nie rozwiązało pierwotnego problemu, ale rozwiązało inny dokuczliwy problem, który miałem od tygodni - Po wyłączeniu tej opcji mój projekt, który był uruchamiany tylko z wiersza poleceń mavena, teraz ponownie działa w zaćmieniu! Dziękuję Ci!
Bill Hileman,
4

Nie znalazłem mavena ani menu konfiguracji, ale znalazłem następujący przycisk, który rozwiązał mój problem:

wprowadź opis obrazu tutaj

borjab
źródło
2

Gdy m2eclipse jest poprawnie zainstalowany, powinien automatycznie dodawać zależności. Należy jednak wygenerować pliki projektu zaćmienia, wprowadzając:

mvn eclipse:m2eclipse

lub alternatywnie, jeśli nie używasz m2eclipse:

mvn eclipse:eclipse
EJB
źródło
3
Uwaga: od wersji 2.8 maven-eclipse-plugin nie obsługuje już "eclipse: m2eclipse" (nie mogłem znaleźć powodu / informacji dlaczego)
Wolkenarchitekt
1

Wystąpiła niewielka różnica, która spowodowała pewne problemy - wiele podprojektów w ramach jednego projektu. W tym przypadku musiałem przejść do każdego folderu zawierającego POM, wykonać polecenie mvn eclipse: eclipse, a następnie ręcznie skopiować / scalić wpisy ścieżki klas do pliku ścieżki klas projektu.

Mearde
źródło
1

W przypadku nowszych wersji Eclipse (> = Mars) kliknij prawym przyciskiem myszy projekt> skonfiguruj> przekonwertuj na projekt Maven

JBoy
źródło
1

Dodawanie odpowiedzi z kilku powodów:

  • W jakiś sposób żadna z wymienionych odpowiedzi nie rozwiązała bezpośrednio mojego problemu.
  • Nie mogę znaleźć opcji „Włącz zarządzanie zależnościami” w Maven. Używam kompilacji Eclipse 4.4.2 w środę, 4 lutego 2015 r.

Pomogła mi kolejna opcja w Maven o nazwie „Aktualizuj projekt”, a kiedy ją kliknę, otworzy się okno z polem wyboru „Wymuś aktualizację migawki / wydania”. Prawdziwy cel tego pola wyboru jest inny, wiem, ale w jakiś sposób rozwiązało problem z zależnościami. wprowadź opis obrazu tutaj

Saurabh Patil
źródło
1

Nic z tego nie rozwiązało mojego problemu. ale gdy kliknąłem plik pom.xml, na dole znajduje się zakładka o nazwie zależności. na tej karcie jest podzielony na 2 sekcje, jedną o nazwie zależności i jedną o nazwie zarządzanie zależnościami. wybierz wszystko w sekcji zależności i kliknij dodaj, aby znaleźć się pod kontrolą zarządzania zależnościami. zamknij i ponownie otwórz projekt.

amralieg
źródło
0

Może mógłbyś zajrzeć do maven-eclipse-plugin zamiast M2Eclipse.

Tam w zasadzie dodajesz konfigurację maven-eclipse-plugin do pom.xml, a następnie uruchamiasz, mvn eclipse:eclipseco wygeneruje wymagane pliki .projecti .classpathdla Eclipse. Wtedy będziesz mieć poprawną ścieżkę budowania w Eclipse.

Juha Syrjälä
źródło
eclipse: eclipse is bad, dodaje wszystkie biblioteki, jedna po drugiej, do twoich zależności zamiast polegać na Maven
razor
0

Upewnij się, że POM jest zgodny z konwencją nazewnictwa i jest nazwany małymi literami jako pom.xmli NIE POM.xml.

W moim przypadku wszystko było w porządku, ale Eclipse wciąż narzekał, próbując kliknąć prawym przyciskiem myszy i Update project configuration- powiedział mi, że nie można odczytać POM. Zmieniono nazwę na małe litery - pom.xmlz POM.xml- i zadziałało.

Karun
źródło
0

Też spotkałem się z tym problemem. Kiedy dodaję zależności w pom.xml, sprawdziłem w folderze lokalnym /Users/xyz/.m2/i słoiki są już tam pobrane, ale nie mogę dodać ścieżki budowania zaćmienia.

Moja wersja zaćmienia: Wersja Mars.2 (4.5.2)

kliknij prawym przyciskiem myszy projekt > Maven > Włącz rozdzielczość obszaru roboczego

I to rozwiązało mój problem.

Wir
źródło
0

Zwykle możesz skopiować plik .classpath z działającego projektu, ponieważ nie ma tu żadnego konkretnego projektu, zakładając, że masz strukturę standardowego projektu Maven.

Puneet Lamba
źródło
0

To działało dla mnie w Eclipse Oxygen (4.7.0):

Kliknij prawym przyciskiem myszy Projekt -> Maven -> Wybierz profile Mavena ..., a następnie zaznacz pole Repozytorium Proxy, naciśnij OK.

r590
źródło