我在运行MVN clean install时收到以下消息
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
D:dataworkextjs.parsersrcmainjavacommodelComponent.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:dataworkextjs.parsersrcmainjavacommodelContainer.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>
您需要告诉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>
在-source 1.3中不支持泛型
错误信息非常清楚。您已经告诉编译器在没有泛型的-source 1.3模式下编译。所以,没有泛型
老问题。等了很长一段时间之后,我没有得到答案。然而,在浏览maven编译器插件文档时,我知道插件有默认设置。因此,早期版本使用JDK 1.3作为源/目标的默认值,现在它使用1.5。在阅读文档后运行"mvn clean install -X"观察到
- Maven编译目标在内部使用Maven -compiler-plugin 在pom中,通过在构建部分指定maven-compiler-plugin,我们可以覆盖某些配置,如source/target
- 如果我们没有指定,那么maven将使用"maven-compiler-plugin"本身给出的默认值,这取决于它的版本。
因此,在pom中没有指定"maven-compiler-plugin"及其配置(源/目标)时会出现错误。