Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么maven使用maven编译器插件2.0.2而不是3.0?_Maven - Fatal编程技术网

为什么maven使用maven编译器插件2.0.2而不是3.0?

为什么maven使用maven编译器插件2.0.2而不是3.0?,maven,Maven,我试图建立一些maven项目。它失败了,因为maven使用了旧的Java1.3,而project使用的是泛型。我不知道我可以覆盖maven编译器插件版本以及源代码和目标,但这不是重点 复制步骤 $ git clone https://github.com/DuLerWeil/netty-diameter && cd netty-diameter $ mvn help:effective-pom ... <plugin> <artifa

我试图建立一些maven项目。它失败了,因为maven使用了旧的Java1.3,而project使用的是泛型。我不知道我可以覆盖maven编译器插件版本以及源代码和目标,但这不是重点

复制步骤

$ git clone https://github.com/DuLerWeil/netty-diameter && cd netty-diameter
$ mvn help:effective-pom
...
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0.2</version>
        <executions>
          <execution>
            <id>default-testCompile</id>
            <phase>test-compile</phase>
            <goals>
              <goal>testCompile</goal>
            </goals>
          </execution>
          <execution>
            <id>default-compile</id>
            <phase>compile</phase>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

您的JAVA_主页需要指向JDK而不是JRE。JDK是Java开发环境,只有这个环境包含javac可执行文件(编译器)。maven编译器插件使用javac编译器——它本身不是编译器

编译器插件也有一些配置来定义java版本。请参阅中的“源”和“目标”


这里可以找到一个使用示例:-您可能可以删除执行配置-因为它看起来像默认值。

这并不能回答问题。从问题“我知道我可以覆盖maven编译器插件版本、源代码和目标,但这不是重点。”。rofrol想知道为什么maven使用的是2.0.2版本的编译器插件,而不是3.0版本。我认为这是混淆的,没有显示3.0版本,pom包含2.0.2,所以ok。我看到的唯一的3.x版本是maven本身和linux内核。这就是maven所用的。如果我正确理解了这个问题,罗夫罗并没有在他的pom中明确设置这个。他想知道这个配置是从哪里来的,没错。maven正在使用旧的maven编译器插件,有效地将源代码设置为java 1.3。在项目中搜索“maven编译器插件”——有人会覆盖您的版本。它可能只是您使用的配置中的一个输入错误,因此被忽略。另一个选项是检查settings.xml文件(mvn help:effective settings),其中可能有一个定义此版本的配置文件。根据,您应该使用默认值为的版本2.3.2。一定有什么东西覆盖了这个。此页面详细说明maven如何解析插件(),而下面详细说明它如何基于前缀()解析插件可能会帮助您确定错误插件的定义位置。基本问题是,在项目中不存在maven编译器插件的定义,这意味着maven将获取您在本地存储库中的插件。这是由于之前使用Maven 2.2.1或使用将Maven编译器插件版本定义为2.0.2的项目运行的结果。这表明给定项目未正确配置为与Maven一起工作(例如,没有插件的定义)。这里还可以找到一个解决方案:
$ mvn -v
Apache Maven 3.0.5
Maven home: /usr/share/maven
Java version: 1.7.0_72, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-oracle/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.16.0-28-generic", arch: "amd64", family: "unix"
$ printenv JAVA_HOME
/usr/lib/jvm/java-7-oracle
$ readlink -f $(type -p java)
/usr/lib/jvm/java-7-oracle/jre/bin/java
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.10
Release:    14.10
Codename:   utopic