остановите IntelliJ IDEA для переключения уровня языка java каждый раз, когда POM перезагружается (или измените уровень языка проекта по умолчанию)
используя IntelliJ 12, у меня есть проект java, и я использую maven с pom.XML.
Мой проект использует java8, но, похоже, уровень языка проекта по умолчанию был установлен на 6 при импорте проекта.
Я могу изменить уровень языка на 8.0 (F4 -> Modules -> Language level), однако каждый раз, когда я редактирую свой pom.xml уровень проекта переключается обратно на "использовать уровень языка проекта", и я должен редактировать эти настройки снова и снова.
есть ли что-то, что мне нужно добавить в ПОМ.xml для установки уровня языка по умолчанию 8.0?
8 ответов:
согласно комментарию Марка, вот как это сделать:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
более короткая версия ответа викингстеве:
<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
Я думаю, что это связано с концептуальным конфликтом между плагином компилятора Maven и IntelliJ idea. По-видимому, более новые версии плагина компилятора имеют уровень по умолчанию 1,5 (см. http://maven.apache.org/plugins/maven-compiler-plugin/). поэтому, если плагин компилятора используется вообще в проекте, а уровень компилятора явно не задан в pom.xml, всякий раз, когда POM повторно обрабатывается, уровень вернется к значению по умолчанию.
Так что есть концептуальный конфликт, который игнорируется Intellij IDEA. IDE по-прежнему позволяет устанавливать параметры проекта и модуля, но не предоставляет никаких предупреждений или отзывов о том, что этот параметр управляется pom.XML. Решения будут либо явно разрешать переопределение параметра плагина компилятора POM (возможно, неразумно, потому что то, что происходит при использовании maven в командной строке), либо деактивировать элементы управления в IDE, когда этот параметр из POM действует.
решение по настоящее время заключается в том, чтобы установить желаемый уровень компилятора в плагине компилятора в pom, повторном импорте, а не пытаться установить его в настройках модуля.
есть два способа сделать это, добавьте один из них в ПОМ.xml-файл:
Сначала-Добавить Свойства
<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>второй - добавить плагин
<plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>Дайте мне знать, если это поможет.
Я много боролся с этой проблемой, из-за создания микросервисов с Dropwizard. В конце концов я узнал, что у меня были свои свойства сборки в неправильном пом файл (основной сервис
pom.xml).Итак, хотя другие пакеты больше похожи на библиотеки, Я не смог использовать синтаксис Java 8.
когда я рефакторинг плагин сборки в "глобальный"
.pom.xml" файл, все дочерние контейнеры смогли использовать новый синтаксис.может помочь кому-то возникли проблемы с мульти-контейнерных проектов
ни одно из решений не помогло в моем случае. Мне не нужно было указывать какую-либо версию Java в моем
pom.xml.мне нужно было открыть
<project-name>.imlфайл и изменить версию JDK там.Оригинал:
<?xml version="1.0" encoding="UTF-8"?> <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5"> <!-- ... ^ --> <!-- ... | -->обновление:
<?xml version="1.0" encoding="UTF-8"?> <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> <!-- ... ^ --> <!-- ... | -->это вообще не имеет смысла. Ни в коем случае я не указал версию JDK для Java 1.5.
для меня решение обновления POM (plugins plus properties) до требуемой версии компилятора Java (1_7 в моем случае) работало. Впрочем как то ...файл iml для каждого проекта был сгенерирован с оригинальным pom (с версией компилятора по умолчанию 1_5, как объяснил кто-то выше) имеет версию JDK 1_5, это все еще переопределяет версию pom.
Я удалил .папка idea вручную и импортировала модуль в IntelliJ с реимпортом из обновленного pom. Когда я реимпортируемые модуль из обновленного POM, я мог видеть, что файлы iml имели обновленную версию JDK (1_7 в моем случае) .
был один дополнительный шаг, который я должен был следовать, в дополнение к установка свойств сборки maven,добавление Maven-компилятор-плагин и изменение версии Java в .iml file. (каждый задокументирован уже в других ответах). Вы также должны установите версию компилятора в настройках.
Comments