[java] Eclipse에서 가져온 Maven 프로젝트가 기본적으로 Java 1.6 대신 Java 1.5를 사용하게 만드는 원인은 무엇입니까?

필자는 Maven 프로젝트를 가져 왔으며 1.6을 Eclipse 기본값으로 구성했지만 Java 1.5를 사용했다 Preferences->Java->Installed JREs.

나는 여전히 빌드 오류가 프로젝트가 자바 1.5를 사용하여 때부터 왼쪽했던 1.6 JRE를 사용하는 Maven 프로젝트를 변경하면 (나는 이러한 빌드 오류 앞서 설명 : 내가 m2eclipse에와 빌드 오류가 아닌 명령 줄에서 maven2와 -내 m2eclipse가 잘못 구성되어 있습니까? )

프로젝트를 삭제하고 다시 시도하지만 이번에는 빌드 1.6에서 Java 1.6을 사용하여 빌드 문제가 제거되는지 확인하고 싶습니다.

프로젝트를 가져올 때 프로젝트가 Java 1.6을 사용하도록하려면 어떻게해야합니까?



답변

m2eclipse 플러그인은 Eclipse 기본값을 사용하지 않으며 m2eclipse 플러그인은 POM에서 설정을 파생합니다. 따라서 Eclipse에서 가져올 때 Java 1.6 설정을 사용하도록 Maven 프로젝트를 구성하려면 maven-compiler-plugin이미 제안한대로 적절하게 구성하십시오 .

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.1</version>
  <configuration>
    <source>1.6</source>
    <target>1.6</target>
  </configuration>
</plugin>

프로젝트를 이미 가져온 경우 프로젝트 구성을 업데이트하십시오 (프로젝트를 마우스 오른쪽 단추로 클릭 한 다음 Maven V 업데이트 프로젝트 구성 ).


답변

프로젝트 설명 아래의 pom.xml에 이것을 추가하고 작동했습니다.

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


답변

이미 제공된 답변에 무언가를 추가하고 싶었습니다. 기본적으로 maven-compiler-plugin 은 m2e가 정보를 얻는 Java 1.5를 사용하여 프로젝트를 컴파일합니다.

그렇기 때문에 프로젝트에서 maven-compiler-plugin 을 1.5 이외의 것으로 명시 적으로 선언 해야하는 이유 입니다. 유효 pom.xmlmaven-compiler-plugin 에 기본 설정을 내재적으로 사용합니다 pom.xml.


답변

<project>

    <!-- ... -->

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>


답변

다음은 Java 1.5의 근본 원인입니다.

또한 현재 Maven을 실행하는 JDK와 관계없이 기본 소스 설정은 1.5이고 기본 대상 설정은 1.5입니다. 이 기본값을 변경하려면 소스 및 대상을 설정해야합니다.

참조 : Apache Mavem 컴파일러 플러그인

세부 사항은 다음과 같습니다.

일반 pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
             http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>

    <groupId>com.pluralsight</groupId>
    <artifactId>spring_sample</artifactId>
    <version>1.0-SNAPSHOT</version>

</project>

다음 플러그인은 확장 된 POM 버전 (Effective POM)에서 가져옵니다.

이것은 명령 줄 에서이 명령으로 얻을 수 있습니다. C:\mvn help:effective-pom여기에는 전체 pom 대신 작은 조각을 넣었습니다.

    <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <executions>
      <execution>
        <id>default-compile</id>
        <phase>compile</phase>
        <goals>
          <goal>compile</goal>
        </goals>
      </execution>
      <execution>
        <id>default-testCompile</id>
        <phase>test-compile</phase>
        <goals>
          <goal>testCompile</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

여기에서도 Java 버전이 어디에 정의되어 있는지 알지 못하고 더 자세히 파고들 수 있습니다 …

jar 파일로 제공되는 Apache Maven Compiler Plugin»3.1 플러그인을 다운로드하여 7-zip 과 같은 파일 압축 도구에서 엽니 다.

항아리를 가로 질러서

plugin.xml

폴더 안의 파일

maven-compiler-plugin-3.1.jar \ META-INF \ maven \

이제 파일에 다음 섹션이 나타납니다.

      <configuration>
    <basedir implementation="java.io.File" default-value="${basedir}"/>
    <buildDirectory implementation="java.io.File" default-value="${project.build.directory}"/>
    <classpathElements implementation="java.util.List" default-value="${project.testClasspathElements}"/>
    <compileSourceRoots implementation="java.util.List" default-value="${project.testCompileSourceRoots}"/>
    <compilerId implementation="java.lang.String" default-value="javac">${maven.compiler.compilerId}</compilerId>
    <compilerReuseStrategy implementation="java.lang.String" default-value="${reuseCreated}">${maven.compiler.compilerReuseStrategy}</compilerReuseStrategy>
    <compilerVersion implementation="java.lang.String">${maven.compiler.compilerVersion}</compilerVersion>
    <debug implementation="boolean" default-value="true">${maven.compiler.debug}</debug>
    <debuglevel implementation="java.lang.String">${maven.compiler.debuglevel}</debuglevel>
    <encoding implementation="java.lang.String" default-value="${project.build.sourceEncoding}">${encoding}</encoding>
    <executable implementation="java.lang.String">${maven.compiler.executable}</executable>
    <failOnError implementation="boolean" default-value="true">${maven.compiler.failOnError}</failOnError>
    <forceJavacCompilerUse implementation="boolean" default-value="false">${maven.compiler.forceJavacCompilerUse}</forceJavacCompilerUse>
    <fork implementation="boolean" default-value="false">${maven.compiler.fork}</fork>
    <generatedTestSourcesDirectory implementation="java.io.File" default-value="${project.build.directory}/generated-test-sources/test-annotations"/>
    <maxmem implementation="java.lang.String">${maven.compiler.maxmem}</maxmem>
    <meminitial implementation="java.lang.String">${maven.compiler.meminitial}</meminitial>
    <mojoExecution implementation="org.apache.maven.plugin.MojoExecution">${mojoExecution}</mojoExecution>
    <optimize implementation="boolean" default-value="false">${maven.compiler.optimize}</optimize>
    <outputDirectory implementation="java.io.File" default-value="${project.build.testOutputDirectory}"/>
    <showDeprecation implementation="boolean" default-value="false">${maven.compiler.showDeprecation}</showDeprecation>
    <showWarnings implementation="boolean" default-value="false">${maven.compiler.showWarnings}</showWarnings>
    <skip implementation="boolean">${maven.test.skip}</skip>
    <skipMultiThreadWarning implementation="boolean" default-value="false">${maven.compiler.skipMultiThreadWarning}</skipMultiThreadWarning>
    <source implementation="java.lang.String" default-value="1.5">${maven.compiler.source}</source>
    <staleMillis implementation="int" default-value="0">${lastModGranularityMs}</staleMillis>
    <target implementation="java.lang.String" default-value="1.5">${maven.compiler.target}</target>
    <testSource implementation="java.lang.String">${maven.compiler.testSource}</testSource>
    <testTarget implementation="java.lang.String">${maven.compiler.testTarget}</testTarget>
    <useIncrementalCompilation implementation="boolean" default-value="true">${maven.compiler.useIncrementalCompilation}</useIncrementalCompilation>
    <verbose implementation="boolean" default-value="false">${maven.compiler.verbose}</verbose>
    <mavenSession implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
    <session implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
  </configuration>

위의 코드를보고 다음 두 줄을 찾으십시오.

    <source implementation="java.lang.String" default-value="1.5">${maven.compiler.source}</source>
    <target implementation="java.lang.String" default-value="1.5">${maven.compiler.target}</target>

행운을 빕니다.


답변

JRE가 실행 구성에 정의되었을 수 있습니다. Eclipse에서 다음 단계에 따라 빌드 JRE를 변경하십시오.

1) 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 실행 도구 > 실행 구성을 선택 하십시오.

2) Run Configurations 창의 왼쪽 패널에서 프로젝트 빌드 구성을 선택하십시오. 오른쪽에는 Main, JRE, Refresh, Source 등 다양한 탭이 있습니다.

3) JRE 탭을 클릭하면 다음과 같이 표시됩니다

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

4) 기본적으로 Work Default JRE (기본 설정-> Java-> 설치된 JRE 에서 기본값으로 선택한 JRE )가 사용됩니다. 설치된 다른 JRE를 사용하려면 Alternate JRE 확인란을 선택하고 드롭 다운에서 선호하는 JRE를 선택하십시오.


답변

Springboot에서 가장 간단한 솔루션

Springboot를 사용하면 가장 간단한 것을 알려 드리겠습니다.

<properties>
  <java.version>1.8</java.version>
</properties>

그런 다음 Eclipse 프로젝트를 마우스 오른쪽 단추로 클릭하십시오. Maven> 프로젝트 업데이트> pom.xml에서 프로젝트 구성 업데이트

그렇게해야합니다.