maven正在用java 1.7编译代码,但我想用1.8编译它

时间:2015-08-04 07:43:16

标签: java maven

我正在使用maven,并希望使用JDK 1.8编译我的代码 所以我安装了JDK 1.8
然后(这是在Windows上)设置'path'变量和'JAVA_HOME'

  

PATH = C:\施工\工具\ ibm_sdk80 \ BIN; C:\施工\工具\ Apache的行家-3.2.5 \ BIN;

java home:

  

C:\ Users \ satish.marathe>设置JAVA_HOME
  JAVA_HOME = C:\施工\工具\ ibm_sdk80

java版给我:

  

C:\ Users \ satish.marathe> java -version
  java版“1.8.0”
  Java(TM)SE运行时环境(构建pwa6480sr1fp10-20150711_01(SR1 FP10))
  IBM J9 VM(内部版本2.8,JRE 1.8.0 Windows 7 amd64-64压缩参考文献20150630_255633(已启用JIT,已启用AOT)
  J9VM - R28_jvm.28_20150630_1742_B255633
  JIT - tr.r14.java_20150625_95081.01
  GC - R28_jvm.28_20150630_1742_B255633_CMPRSS
  J9CL - 20150630_255633)
  JCL - 20150711_01基于Oracle jdk8u51-b15

javac版告诉我:

  

C:\ Users \ satish.marathe> javac -version
  javac 1.8.0-internal

所以一切似乎都指向java 1.8
现在我使用:

编译我的项目
mvn clean install  

然而,当我检查已编译的类时,我发现主要版本是51 - 这意味着它是Java 1.7 对于那些想知道如何在类文件中找到java版本的人! :)

javap -verbose <<your_package>>.<<your_class>> | findStr "major"  

EDIT1:
我忘了包含maven -version的输出,所以这里是:

  

C:&gt; mvn -version   Apache Maven 3.2.5(12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T22:59:23 + 05:30)
  Maven home:C:\ construction \ tools \ apache-maven-3.2.5 \ bin ..
  Java版本:1.8.0,供应商:IBM Corporation
  Java home:C:\ construction \ tools \ ibm_sdk80 \ jre
  默认语言环境:en_US,平台编码:Cp1252
  操作系统名称:“windows 7”,版本:“6.1”,arch:“amd64”,系列:“dos”
  C:&GT;

好的 - 所以我的问题是:
我的pom中没有maven_compiler_plugin的任何条目 所需要的是什么?
没有那个条目 - 不应该maven只是从系统中选择我的java版本为1.8并编译代码(它似乎没有显然做) 感谢

3 个答案:

答案 0 :(得分:6)

您可以使用mvn -version查看Maven使用的Java版本。

您的问题:我的pom中没有maven_compiler_plugin的任何条目,那是必需的吗?

答案:如果你想要一个不同的编译器版本来编译你的源代码,你需要使用maven-compiler-plugin指定:

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

有关详细信息,请查看maven网站:maven-compiler-plugin

  

默认编译器插件用于编译你的源代码   项目。从3.0开始,默认编译器是javax.tools.JavaCompiler   (如果您使用的是java 1.6)并且用于编译Java源代码。

答案 1 :(得分:4)

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

答案 2 :(得分:2)

您可以使用 maven-compiler-plugin ,将JAVA_HOME替换为您当地的java sdk路径。

      <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
                <encoding>UTF-8</encoding>
                <compilerId>javac</compilerId>
                <source>1.8</source>
                <target>1.8</target>
                <executable>JAVA_HOME/bin/javac</executable>
                <showDeprecation>true</showDeprecation>
                <showWarnings>true</showWarnings>
                <verbose>true</verbose>
                <fork>true</fork>
            </configuration>
        </plugin>