Używając IntelliJ 12, mam projekt java i używam maven z pom.xml. Mój projekt używa java8, ale wygląda na to, że domyślny poziom języka projektu został ustawiony na 6 podczas importowania projektu.
Mogę zmienić poziom języka na 8.0 (F4 -> Moduły -> Poziom języka), jednak za każdym razem, gdy edytuję plik pom.xml, poziom projektu jest przełączany z powrotem na „użyj poziomu języka projektu” i muszę ponownie edytować te ustawienia i jeszcze raz.
Czy jest coś, co muszę dodać do pom.xml, aby ustawić domyślny poziom języka na 8.0?
java
maven
intellij-idea
pom.xml
Quentin
źródło
źródło
Odpowiedzi:
Zgodnie z komentarzem Marka, oto jak to zrobić:
źródło
<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
Krótsza wersja odpowiedzi vikingsteve to:
źródło
Myślę, że ma to związek z koncepcyjnym konfliktem między wtyczką kompilatora Maven a ideą IntelliJ. Najwyraźniej nowsze wersje wtyczki kompilatora mają domyślny poziom 1,5 (patrz http://maven.apache.org/plugins/maven-compiler-plugin/ ). Więc jeśli wtyczka kompilatora jest w ogóle używana w projekcie, a poziom kompilatora nie jest jawnie ustawiony w pom.xml, za każdym razem, gdy POM jest ponownie przetwarzany, poziom powróci do domyślnego.
Istnieje więc konflikt pojęciowy, który jest ignorowany przez Intellij IDEA. IDE nadal pozwala na ustawienie projektu i ustawień modułu, ale nie zapewnia żadnego ostrzeżenia ani informacji zwrotnej, że to ustawienie jest kontrolowane przez pom.xml. Rozwiązaniem byłoby albo jawne zezwolenie na nadpisywanie ustawienia wtyczki kompilatora POM (być może niezbyt mądre, ponieważ co się stanie, gdy użyjesz maven w wierszu poleceń) lub dezaktywacja elementów sterujących w IDE, gdy to ustawienie z POM jest aktywne.
Obecnie rozwiązaniem jest ustawienie żądanego poziomu kompilatora we wtyczce kompilatora w pom, a następnie ponowne zaimportowanie zamiast próby ustawienia go w ustawieniach modułu.
źródło
Uaktualniam projekt z JDK 8 do JDK 10+. Miałem właściwości kompilatora określone poprawnie w następujący sposób:
Jednak projekt Idea ciągle resetowałby poziom języka do 8.
W końcu doszedłem do wniosku, że proces importu Maven firmy Idea używał JDK 8 do importowania projektu, co ograniczyło poziom języka do <= 8.
Aby to naprawić , zaktualizowałem właściwość `` JDK dla importera '' w Ustawieniach -> Kompilacja, wykonanie, wdrażanie -> Narzędzia kompilacji -> Maven -> Importowanie, aby użyć JDK 11.
źródło
Możesz to zrobić na dwa sposoby, dodaj jeden z nich do pliku pom.xml:
Najpierw dodaj właściwości
po drugie - Dodaj wtyczkę
Daj mi znać, jeśli to pomoże.
źródło
Żadne z rozwiązań nie pomogło w moim przypadku. Nie musiałem określać żadnej wersji Java w moim
pom.xml
.Musiałem otworzyć
<project-name>.iml
plik i zmienić tam wersję JDK.Oryginalny:
Zaktualizowano:
To w ogóle nie ma sensu. W żadnym momencie nie określiłem wersji JDK dla Java 1.5.
źródło
Bardzo zmagałem się z tym problemem ze względu na budowanie mikroserwisów z Dropwizard. W końcu dowiedziałem się, że moje właściwości kompilacji znajdowały się w niewłaściwym pliku pom (głównej usługi
pom.xml
).Tak więc, mimo że inne pakiety bardziej przypominają biblioteki , nie byłem w stanie użyć składni Java 8.
Kiedy refaktoryzowałem wtyczkę kompilacji do
.pom.xml
pliku „globalnego” , wszystkie kontenery potomne mogły używać nowej składni.Może pomóc komuś, kto ma problemy z projektami z wieloma kontenerami
źródło
U mnie zadziałało rozwiązanie polegające na aktualizacji POM (wtyczki plus właściwości) do wymaganej wersji kompilatora Javy (w moim przypadku 1_7). Jednak ponieważ plik .iml dla każdego projektu został wygenerowany przy użyciu oryginalnego pom (z domyślną wersją kompilatora 1_5, jak wyjaśnił ktoś powyżej) ma wersję JDK 1_5, to nadal zastępuje wersję pom.
Usunąłem ręcznie folder .idea i zaimportowałem moduł do IntelliJ z ponownym importem ze zaktualizowanego pliku pom. Kiedy ponownie zaimportowałem moduł ze zaktualizowanego POM, zobaczyłem, że pliki iml mają zaktualizowaną wersję JDK (1_7 w moim przypadku).
źródło
Był jeszcze jeden dodatkowy krok, który musiałem wykonać, oprócz ustawienia właściwości kompilacji maven , dodania wtyczki maven-compiler-plugin i zmodyfikowania wersji Java w pliku .iml . (każdy udokumentowany już w innych odpowiedziach). Musisz także ustawić wersję kompilatora w ustawieniach .
źródło