[java] pom을 다시로드 할 때마다 IntelliJ IDEA를 중지하여 Java 언어 레벨을 전환하거나 기본 프로젝트 언어 레벨을 변경하십시오.

IntelliJ 12를 사용하여 Java 프로젝트가 있으며 pom.xml과 함께 maven을 사용합니다. 내 프로젝트에서 java8을 사용하고 있지만 프로젝트를 가져 오는 동안 기본 프로젝트 언어 레벨이 6으로 설정된 것 같습니다.

언어 수준을 8.0 (F4-> 모듈-> 언어 수준)으로 변경할 수 있지만 pom.xml을 편집 할 때마다 프로젝트 수준이 “프로젝트 언어 수준 사용”으로 다시 전환되며이 설정을 다시 편집해야합니다. 다시.

기본 언어 수준을 8.0으로 설정하기 위해 pom.xml에 추가해야 할 것이 있습니까?



답변

Mark의 의견에 따라 다음과 같이하십시오.

<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>


답변

vikingsteve의 대답의 짧은 버전은 다음과 같습니다.

<properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>


답변

필자는 이것이 Maven 컴파일러 플러그인과 IntelliJ 아이디어의 개념적 충돌과 관련이 있다고 생각합니다. 분명히 최신 버전의 컴파일러 플러그인은 기본 수준이 1.5입니다 ( http://maven.apache.org/plugins/maven-compiler-plugin/ 참조 ). 따라서 컴파일러 플러그인이 프로젝트에서 전혀 사용되지 않고 컴파일러 레벨이 pom.xml에 명시 적으로 설정되지 않은 경우 POM이 재 처리 될 때마다 레벨이 기본값으로 돌아갑니다.

따라서 Intellij IDEA에서 무시되는 개념적 충돌이 있습니다. IDE는 여전히 프로젝트 및 모듈 설정을 설정할 수 있지만이 설정이 pom.xml에 의해 제어된다는 경고 나 피드백을 제공하지 않습니다. 솔루션은 명시 적으로 POM 컴파일러 플러그인 설정을 무시하도록 허용하거나 (명령 행에서 maven을 사용할 때 발생하는 상황 때문에 현명하지 않을 수도 있음) POM의이 설정이 적용되는 경우 IDE의 컨트롤을 비활성화하는 것입니다.

현재 해결책은 모듈 설정에서 설정하지 않고 pom의 컴파일러 플러그인에서 원하는 가져 오기 레벨을 다시 가져 오는 것입니다.


답변

JDK 8에서 JDK 10+로 프로젝트를 업그레이드하고 있습니다. 다음과 같이 컴파일러 속성을 올바르게 지정했습니다.

<properties>
  <maven.compiler.source>10</maven.compiler.source>
  <maven.compiler.target>10</maven.compiler.target>
</properties>

그러나 아이디어 프로젝트는 계속해서 언어 수준을 8로 재설정합니다.

결국 Idea ‘s Maven 가져 오기 프로세스에서 JDK 8을 사용하여 언어 레벨을 <= 8로 제한하는 프로젝트를 가져오고 있음을 알았습니다.

수정하려면 설정-> 빌드, 실행, 배포-> 빌드 도구-> Maven-> 가져 오기에서 ‘가져 오기 용 JDK’속성을 업데이트하여 JDK 11을 사용하십시오.

여기에 이미지 설명을 입력하십시오


답변

이를 수행하는 두 가지 방법이 있습니다. 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>

도움이되는지 알려주세요.


답변

내 경우에는 어떤 해결책도 도움이되지 않았습니다. 내에서 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">
    <!-- ...                                                   ^ -->
    <!-- ...                                                   | -->

이것은 전혀 의미가 없습니다. Java 1.5 용 JDK 버전을 지정하지 않았습니다.


답변

Dropwizard로 마이크로 서비스를 구축했기 때문에이 문제로 많은 어려움을 겪었습니다. 결국 나는 잘못된 pom 파일 에 빌드 속성이 있음을 알았습니다 (주요 서비스pom.xml )에 .

다른 패키지는 라이브러리 와 비슷하지만 Java 8 구문을 사용할 수 없었습니다.

빌드 플러그인을 “전역”으로 리팩터링했을 때 .pom.xml “파일 모든 하위 컨테이너가 새 구문을 사용할 수있었습니다.

여러 컨테이너 프로젝트에 문제가있는 사람을 도울 수 있음