IntelliJ IDEA를 중지하여 폼을 새로고침할 때마다 Java 언어 수준을 전환합니다(또는 기본 프로젝트 언어 수준을 변경).
IntelliJ 12를 사용하여 자바 프로젝트를 진행하고 있으며 maven과 pom.xml을 함께 사용하고 있습니다.제 프로젝트는 java8을 사용하고 있는데, 프로젝트를 Import할 때 기본 프로젝트 언어 레벨이 6으로 설정되어 있는 것 같습니다.
언어 레벨은 8.0(F4 -> Modules -> Language level)로 변경할 수 있지만 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>
바이킹스티브의 답은 다음과 같습니다.
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
프로젝트를 JDK 8에서 JDK 10+로 업그레이드하려고 합니다.컴파일러 속성을 다음과 같이 올바르게 지정했습니다.
<properties>
<maven.compiler.source>10</maven.compiler.source>
<maven.compiler.target>10</maven.compiler.target>
</properties>
그러나 Idea 프로젝트는 계속해서 언어 수준을 8로 재설정합니다.
결국 Idea의 Maven Import 프로세스에서 JDK 8을 사용하여 프로젝트를 Import하고 언어 수준을 <= 8로 제한한다는 것을 알게 되었습니다.
수정하기 위해 설정 -> 빌드, 실행, 전개 -> 빌드 도구 -> 메이븐 -> Import를 사용하여 JDK 11의 속성을 갱신했습니다.
이것은 Maven 컴파일러 플러그인과 IntelliJ 아이디어의 개념적 충돌과 관련이 있다고 생각합니다.새로운 버전의 컴파일러 플러그인은 디폴트레벨이 1.5인 것 같습니다(http://maven.apache.org/plugins/maven-compiler-plugin/) 참조).따라서 프로젝트에서 컴파일러 플러그인이 전혀 사용되지 않고 pom.xml에서 컴파일러 레벨이 명시적으로 설정되어 있지 않은 경우 POM이 재처리될 때마다 레벨은 기본값으로 돌아갑니다.
그래서 인텔리즈 IDEA에 의해 무시되는 개념적인 충돌이 있다.IDE에서는 프로젝트와 모듈 설정을 계속 할 수 있지만 이 설정이 pom.xml에 의해 제어된다는 경고나 피드백은 제공되지 않습니다.해결책은 POM 컴파일러 플러그인 설정을 명시적으로 덮어쓰도록 허용하거나(명령줄에서 maven을 사용하면 어떤 일이 발생하므로 현명하지 않을 수 있음), POM에서 이 설정이 유효할 때 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>
도움이 되면 알려주세요.
제 경우에는 어떤 해결책도 도움이 되지 않았습니다.에서 자바 필요가 .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 버전을 지정한 적이 없습니다.
저는 Drop Wizard로 마이크로 서비스를 구축하여 이 문제로 많은 어려움을 겪었습니다.결국 잘못된 폼 파일에 빌드 속성이 있다는 것을 알게 되었습니다(메인 서비스의pom.xml
를 참조해 주세요.
그래서 다른 패키지는 라이브러리에 가깝지만 Java 8 구문을 사용할 수 없었습니다.
을 "로 리팩터링 때.pom.xml
할 수
다중 컨테이너 프로젝트에서 문제가 있는 사용자에게 도움이 될 수 있습니다.
고마워, 효과가 있어
저와 같은 실수를 하지 않도록 주의하세요.
프로파일이 있는 경우 오른쪽 프로파일에 플러그인을 추가합니다.
<profiles>
<profile>
<id>foo</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>bar</id>
.......
</profile>
<profiles>
POM(플러그인과 속성)을 필요한 Java 컴파일러 버전(내 경우 1_7)으로 업데이트하는 솔루션이 작동했습니다.그러나 각 프로젝트의 .iml 파일은 (위 설명에 따라 디폴트 컴파일러 버전 1_5를 사용하여) 원래 POM을 사용하여 생성되었기 때문에 JDK 버전 1_5는 여전히 POM 버전보다 우선됩니다.
.idea 폴더를 수동으로 삭제하고 업데이트한 pom에서 다시 Import하여 모듈을 IntelliJ로 Import했습니다.업데이트된 POM에서 모듈을 다시 Import 했을 때 iml 파일에 업데이트된 JDK 버전(내 경우 1_7)이 있음을 알 수 있었습니다.
maven 빌드 속성 설정, maven-compiler-plugin 추가 및 .iml 파일의 Java 버전 수정 외에 따라야 할 절차가 하나 더 있었습니다.(각각은 다른 답변에 이미 문서화되어 있습니다).또한 설정에서 컴파일러 버전을 설정해야 합니다.
문제:Java 버전: 11로 예상되지만 버전: 8로 고정됩니다.
거의 모든 답을 시도해 보았지만, 여전히 language_level 8에 얽매여 프로젝트나 Intelij IDE에서는 Java 버전8과 관련된 트레이스를 찾을 수 없었습니다.
그 후 부모의 pom.xml을 탐색했지만 성공적이지 않았지만 할아버지의 pom.xml에서 릴리즈 버전이 8이라는 것을 알게 되었습니다.
솔루션:속성에 다음 세 줄을 추가하면 차이가 생깁니다.
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.release>11</maven.compiler.release>
</properties>
이 문제를 해결한 것은 업데이트 목록입니다.
- [ Project Structure ]> [ modules ]에서 언어 레벨 Java 버전을 8로 변경합니다.
- Project Structure > Project : Java 버전은 1.8이어야 합니다.
- pom 파일에서 위의 응답에 지정된 것과 동일한 변경 사항
- [ Settings ]> [ Java compiler ]> [ Bytecode ]버전을 8로 변경했습니다.
- [ Settings ]> [ maven ]> [ importing ]> [ JDK for Import ]에서 임포터는 1.8이어야 합니다.
언급URL : https://stackoverflow.com/questions/27037657/stop-intellij-idea-to-switch-java-language-level-every-time-the-pom-is-reloaded
'programing' 카테고리의 다른 글
Vuejs 단일 파일 컴포넌트를 컴파일하는 방법 (0) | 2022.07.17 |
---|---|
Vuetify v-btn 클릭 이벤트 (0) | 2022.07.17 |
Vue / Vuex구성 요소에서 Vuex 저장소 속성에 액세스할 수 없음 (0) | 2022.07.17 |
nuxt 레이아웃 함수로 localStorage 데이터 가져오기 (0) | 2022.07.17 |
초보자에게 C 포인터(선언 대 단항 연산자)를 어떻게 설명합니까? (0) | 2022.07.17 |