2

我在运行 mvn clean install 时收到以下消息

[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure

D:\data\work\extjs.parser\src\main\java\com\model\Component.java:[17,15] error:
generics are not supported in -source 1.3

could not parse error message:   (use -source 5 or higher to enable generics)
D:\data\work\extjs.parser\src\main\java\com\model\Container.java:14: error: gene
rics are not supported in -source 1.3
    private List<Component> items;

该项目是简单的 maven 项目,但是当我已经将 JAVA_HOME 设置为 jdk1.7 安装路径时,不会编译泛型错误

但是,当我添加插件时,它工作正常。为什么需要显式设置 hava 主路径。

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <showDeprecation>true</showDeprecation>
                <showWarnings>true</showWarnings>
                <executable>${env.JAVA_HOME}/bin/javac</executable>
                <fork>true</fork>
            </configuration>
        </plugin>

提前致谢...

4

3 回答 3

2

您需要告诉 Maven 使用 JDK 1.5 显式编译您的源代码。在 pom.xml 文件中声明 Maven 编译器插件 (maven-compiler-plugin),如下所示:

<project ...>
  <dependencies>
   ...
  </dependencies>
  <build>
    <plugins>
       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>2.3.1</version>
           <configuration>
               <source>1.5</source>
               <target>1.5</target>
           </configuration>
       </plugin>
    </plugins>
  </build>
</project>
于 2014-03-13T10:18:42.857 回答
1

-source 1.3 不支持泛型

错误信息非常清楚。您已经告诉编译器在没有泛型的 -source 1.3 模式下编译。所以,没有泛型。

于 2013-04-05T11:48:09.147 回答
0

它的老问题。在等了很长一段时间后,我没有得到答案。但是,在浏览 maven 编译器插件文档时,我知道该插件具有默认设置。所以早期版本过去使用 jdk 1.3 作为源/目标的默认值,现在它使用 1.5,例如 在阅读运行“mvn clean install -X”的文档后观察到,

  • 无论如何,Maven 编译目标在内部使用 maven-compiler-plugin
  • 在 pom 中,通过在 build 部分指定 maven-compiler-plugin,我们可以覆盖某些配置,例如 source/target
  • 如果我们不指定,那么 maven 将使用“maven-compiler-plugin”本身给出的默认值,这取决于它的版本。

因此,直到“maven-compiler-plugin”及其配置(源/目标)未在 pom.xml 中指定时才会出现错误。

于 2017-04-28T22:47:40.043 回答