我担心我已经用Google搜索了这个问题,并且所有的答案都说要将以下内容放入pom中:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
...
</plugins>
...
我需要java 8的功能,所以我在上面的标签中添加了1.8,但当我mvn package
时它只会出现编译错误,如:
-source 1.5
中不支持lambda表达式
我已经尝试将构建标记放在pom中的依赖项之前和之后,更改maven编译器插件的版本(我似乎有3.1)并完全删除版本标记,添加插件也作为依赖项并将其打包指定为POM。
我检查了版本和路径:
echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
另外,
java -version
给出
java version "1.8.0"
和
mvn -version
显示器
Java version: 1.8.0, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre
此外,当我启用调试信息时,无论我放入pom中,它都显示使用1.5源:
[DEBUG] (f) showDeprecation = false
[DEBUG] (f) showWarnings = false
[DEBUG] (f) skipMultiThreadWarning = false
[DEBUG] **(f) source = 1.5**
[DEBUG] (f) staleMillis = 0
[DEBUG] **(f) target = 1.5**
[DEBUG] (f) useIncrementalCompilation = true
[DEBUG] (f) verbose = false
[DEBUG] (f) mavenSession = org.apache.maven.execution.MavenSession@4648ce9
[DEBUG] (f) session = org.apache.maven.execution.MavenSession@4648ce9
[DEBUG] -- end configuration --
我的最后一个猜测是因为我只使用了一个我没有实际安装的解压缩的mvn脚本(我必须在运行时指定它的完整路径),我觉得这真的很傻。
另外,我在IntelliJ中使用maven,虽然我不能从命令行调用该maven,也许他们的存储库/配置相互干扰?
答案 0 :(得分:3)
我使用以下属性:
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
配置编译器插件。 至少在Eclipse中,这很好用。
答案 1 :(得分:1)
我建议您添加compilerVersion
参数:
<configuration>
<compilerVersion>1.8</compilerVersion>
<source>1.8</source>
<target>1.8</target>
</configuration>