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?

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.


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.


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.


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


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.


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.


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 .


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


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

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.


1

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


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


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.


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.


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.


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.


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.