如何确定并更改用于执行的 Java Maven 版本?
Posted
技术标签:
【中文标题】如何确定并更改用于执行的 Java Maven 版本?【英文标题】:How do I figure out and change which version of Java Maven is using to execute? 【发布时间】:2011-10-25 08:48:49 【问题描述】:在运行我们的 Maven 构建时,我团队的一名成员在执行时遇到错误。但是,当我们从她的命令行运行java -version
时,它指示Java 1.6.0_26。该错误显然是在尖叫 Maven 正在使用 Java 5。
如何确定和更改 Maven 使用的 Java 版本?
3 个潜在的重要注意事项:
-
这是在命令行中执行的,而不是使用 Eclipse 插件
JAVA_HOME 设置为 Java 1.6 JDK
使用 Maven 2.2.1
【问题讨论】:
似乎 JDK 1.6.0_26 用于使用 1.5 编译您的源代码。这是可能的! 哎呀! :(“此错误”链接已损坏 【参考方案1】:看这里:http://www.MacAdie.net/2011/07/10/adding-some-xml-to-netbeans-pom-files/
【讨论】:
不是我真正想要的。如果您阅读我的链接,实际错误是其中一个依赖插件中的 NoSuchMethodError,它与 maven 编译器插件无关。【参考方案2】:mvn -version
将输出它正在使用的 java。如果 JAVA_HOME 设置为有效的 JDK 目录并且 Maven 正在使用其他东西,那么很可能有人篡改了 Maven 的启动方式。
【讨论】:
您可以定义要与 maven 一起使用的 Java。见帖子:***.com/questions/18813828/…【参考方案3】:您需要将maven-compiler-plugin
配置为使用1.6 个source
和target
参数(默认为1.5)。
这是在<pluginManagment>
部分的项目父 pom 中完成的最好的方法(当然,您始终可以为每个单独的项目配置它)。
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
【讨论】:
【参考方案4】:mvn -version
告诉您 Maven 正在使用什么编译器,因此这回答了问题除非您的 POM 为要使用的版本指定了覆盖值。
这是在pom.xml
中指定覆盖的最简单方法:
<properties>
<maven.compiler.target>1.9</maven.compiler.target>
<maven.compiler.source>1.9</maven.compiler.source>
</properties>
另外,maven-compiler-plugin
可以更明确地指定。在这种情况下,请查看与插件关联的 <source>
和 <target>
值。
这两个选项都被描述为here。
如果您的 POM 有 <parent>
,那么您也需要检查它(递归地)。
注意:当指定source
和target
时,这些值将作为命令行选项传递给编译器。使用此功能,您可以针对比编译器标称值更早的 Java 版本进行编译或运行。
【讨论】:
如果您不想简单地使用路径中的javac
,如何设置编译器 的示例:JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 mvn clean install
。在 Maven 下如何/何时覆盖您的里程可能会有所不同。
作为最终的健全性检查,您可以在构建环境中询问javac
/java
,方法是设置构建参数以将-version
添加到命令行参数——类似于@ 987654323@(用于 Gradle)。
<java.version>
in pom.xml
与此无关:Specifying java version in maven - differences between properties and compiler plugin
请记住,JAVA_HOME
可能已经在您的环境中设置——覆盖PATH
变量。
这似乎很重要,如果它不是那么荒谬的话:maven.apache.org/enforcer/enforcer-rules/…以上是关于如何确定并更改用于执行的 Java Maven 版本?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 maven pom.xml 中更改 shell 脚本输出以使用
Wix Toolset CustomAction 用于确定操作系统是 windows 7/xp 家庭版还是入门版,并显示消息不是