остановите IntelliJ IDEA для переключения уровня языка java каждый раз, когда POM перезагружается (или измените уровень языка проекта по умолчанию)



используя IntelliJ 12, у меня есть проект java, и я использую maven с pom.XML.
Мой проект использует java8, но, похоже, уровень языка проекта по умолчанию был установлен на 6 при импорте проекта.



Я могу изменить уровень языка на 8.0 (F4 -> Modules -> Language level), однако каждый раз, когда я редактирую свой pom.xml уровень проекта переключается обратно на "использовать уровень языка проекта", и я должен редактировать эти настройки снова и снова.



есть ли что-то, что мне нужно добавить в ПОМ.xml для установки уровня языка по умолчанию 8.0?

732   8  

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

    Ничего не найдено.