Intellij IDEA Module 的Language Level的问题

最近从github上fork了张开涛的Shiro代码,IDE是Intellij IDEA。发现不管是Project仍是Module,默认的Language Level都是JDK 1.5,并且每次修改都仅限于当前有效,稍后又会变回JDK 1.5html

 

搜索了一番,解决办法都是这pom.xml中指定compiler的版本,以下:java

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

还有简洁版本:git

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

 

至于缘由,则是maven compiler plugin自身问题:github

Apache Maven Compiler Plugin

The Compiler Plugin is used to compile the sources of your project. Since 3.0, the default compiler is javax.tools.JavaCompiler (if you are using java 1.6) and is used to compile Java sources. If you want to force the plugin using javac, you must configure the plugin option forceJavacCompilerUse.

Also note that at present the default source setting is 1.5 and the default target setting is 1.5, independently of the JDK you run Maven with. If you want to change these defaults, you should set source and target as described in Setting the -source and -target of the Java Compiler.

上面这一段的内容是:apache

  该插件从3.0版本开始,默认编译器是javax.tools.JavaCompiler (前提是JDK 1.6之后);若是想使用javac,须要手动设置。api

  当前(Version: 3.5.1),默认使用JDK 1.5解析和编译源码与运行Maven的JDK版本无关!!!若是想修改,见连接。intellij-idea

ps,连接中的内容以下:oracle

    <project>
      [...]
      <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>
      [...]
    </project>

 

参考:maven

  http://stackoverflow.com/questions/27037657/stop-intellij-idea-to-switch-java-language-level-everytime-the-pom-is-reloadedide

  http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html

  http://docs.oracle.com/javase/8/docs/api/javax/tools/JavaCompiler.html

相关文章
相关标签/搜索