我有一个代码,我正在从2个不同的位置,Win7机器和OSX工作。
当使用Win7机器时,我不需要打扰Maven编译的哪个java版本,我只需要设置PATH变量。如果我使用的是Java 5,它会针对Java 5进行编译,如果我使用的是Java 7,它将针对Java 7编译。没有问题。
我的OSX机器的情况不同。现在这是完全相同的代码集。
我的Java版
[Mac-Pro] ~/apache-maven/apache-maven-3.1.1/conf $
p01ntbl4nk> java -version
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)
My Maven版
[Mac-Pro] ~/apache-maven/apache-maven-3.1.1/conf $
p01ntbl4nk> mvn -version
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 23:22:22+0800)
Maven home: /Users/p01ntbl4nk/apache-maven/apache-maven-default
Java version: 1.7.0_60, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.9.1", arch: "x86_64", family: "mac"
两者都显示相同的java版本。 Java 7u60。
但是当我在我的代码上运行 mvn clean compile 时,我得到了这个 “-source1不支持try-with-resource 0.5"
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project archival-client: Compilation failure
[ERROR] /Users/p01ntbl4nk/GitRepositories/GenericArchival/root/archival-client/src/main/java/org/si/genericArchival/client/App.java:[140,6] error: try-with-resources is not supported in -source 1.5
[ERROR] -> [Help 1]
[ERROR]
我已经检查过,我的主maven settings.xml或模块中的任何pom.xml都没有任何引用,表明使用了sourve 1.5版
要解决此问题,我必须将以下内容添加到我的所有pom.xml
中<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
但这意味着maven模块不再适应底层平台的java版本。
我错过了什么吗?
答案 0 :(得分:2)
嗯,你已经有了答案,但在这里肯定是这样。 http://maven.apache.org/plugins/maven-compiler-plugin/
另请注意,目前默认的源设置为1.5和 默认目标设置为1.5,与您运行Maven的JDK无关 用。如果要更改这些默认值,则应设置source和 如设置Java的-source和-target中所述的目标 编译器。