Maven enforcer不';t检测JDK1.7

Maven enforcer不';t检测JDK1.7,maven,java,Maven,Java,我使用maven enforcer插件仅强制执行JDK1.7(我使用的是java.nio.file)。 出于某种原因,maven enforcer插件无法检测JDK1.7 λ ~/ java -version java version "1.7.0_13" Java(TM) SE Runtime Environment (build 1.7.0_13-b20) Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode) λ ~/

我使用maven enforcer插件仅强制执行JDK1.7(我使用的是java.nio.file)。 出于某种原因,maven enforcer插件无法检测JDK1.7

λ ~/ java -version
java version "1.7.0_13"
Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
λ ~/ javac -version
javac 1.7.0_13
λ ~/ mvn --version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 15:51:28+0200)
Maven home: /usr/local/Cellar/maven/3.0.5/libexec
Java version: 1.7.0_13, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.7.5", arch: "x86_64", family: "mac"
这是我在pom.xml中的代码-

   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-enforcer-plugin</artifactId>
      <executions>
        <execution>
          <id>enforce-versions</id>
          <goals>
            <goal>enforce</goal>
          </goals>
          <configuration>
            <rules>
              <requireJavaVersion>
                <version>1.7</version>
              </requireJavaVersion>
            </rules>
          </configuration>
        </execution>
      </executions>
    </plugin>
编辑

mvn实施者:显示信息


显示版本1.7而不是1.6。。。为什么强制检测java版本1.6?

版本取消是固定的。您提供的是java的精确版本。请始终记住,如果我们不确定确切版本,则应提供范围。将版本更改为[1.7,]


[1.7,)
这意味着任何等于或大于1.7的版本都可以接受。

添加以下内容(如果缺少此文件,则创建此文件)
~/.mavenrc

export JAVA_HOME=/Library/Java/JavaVirtualMachines/{your-jdk-here}/Contents/Home

.mavenrc
仅由maven拾取,因此其他Java程序不会受到此更改的影响。

您没有说明运行的操作系统,但命令“Java…”将在路径上找到名为Java(或windows上的Java.exe)的第一个可执行文件,这可能是您希望与maven一起使用的文件,也可能不是

linux下有一个名为“Alternations”的系统,它将java的特定安装映射到几乎确定的位置(除非您弄乱了路径)此系统的目的是允许您在系统中保留多个版本的程序,如java,并将其中一个版本作为默认版本,除非您指定其他版本

然而,这与Maven无关,Maven需要JDK安装才能正确运行。Maven依赖的java JDK安装中有许多可执行文件,javac编译器,用于构建jar的jar可执行文件,仅举几个最明显的例子。使用替代系统,您必须映射alternativ这就是为什么Maven转而依赖JAVA_HOME变量的原因


在linux系统上,设置JAVA_HOME变量的一个方便的地方是文件~/.mavenrc。如果存在该文件,Maven将读取该文件。

您的机器上是否有多个JDK?还请发布Maven-compiler-plugin的配置。运行mvn enforcer:在应用MRZ解决方案后显示信息。
          <requireJavaVersion>
            <version>[1.7,)</version>
          </requireJavaVersion>
export JAVA_HOME=/Library/Java/JavaVirtualMachines/{your-jdk-here}/Contents/Home