我一直在与一位同事一起解决我在刚加入的新项目中遇到的问题。长话短说,maven 没有正确构建我的 .war 文件。当我给我的同事我的 war 文件时,他遇到了我遇到的同样问题,当他给我他编译的 .war 文件时,一切正常。我们都在使用相同的来源。所以,我正在尝试正确设置 Maven(与他的设置相同),我们现在都有相同版本的 Maven。但是,我认为 maven 看错了 java_home。
当我执行 mvn -version 命令时,我得到以下信息:
C:\java\KME_workspace\CU-KME>mvn -version
Apache Maven 3.0.4 (r1232337; 2012-01-17 03:44:56-0500)
Maven home: C:\java\tools\apache-maven-3.0.4
Java version: 1.6.0_45, vendor: Sun Microsystems Inc.
Java home: C:\java\jdks\jdk1.6.0_45\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
我系统的 JAVA_HOME 变量正确设置为 C:\java\jdks\jdk1.6.0_45。
任何人都知道我的 maven 正在查看 jre,我如何将它正确设置回 JDK?有可能我也正确地看待这个问题,所以如果你有任何想法,那就太好了。
谢谢。
正如一些人指出的那样,maven 版本中 java 主页中的 JRE 引用对我来说是一个红鲱鱼兔子洞。经过进一步测试,我得到了一些有趣的新信息。我直接从命令行运行 maven 命令。我使用 eclipse 从我们的 svn 存储库中检出代码,并尝试在该代码上运行 maven 包,但 .war 构建不正确。但是,如果我在 eclipse 中将团队导出到一个新目录,并在该目录上运行 maven 包,它会很好地构建 .war 并完美运行。据我了解,eclipse 中的团队导出会删除导出目录中的所有颠覆文件。有人对如何解决这个问题有任何想法吗?
原文由 Jay 发布,翻译遵循 CC BY-SA 4.0 许可协议
来自 Maven 属性指南:
java.home
属性与 JAVA_HOME 环境设置不同。它实际上是一个动态属性,向您显示哪个 JRE 正在运行您的代码。尝试正确设置 java.home 属性并查看它是否有效。