从命令行构建时出现不一致的Maven错误

时间:2016-06-28 21:43:16

标签: java eclipse maven google-app-engine batch-file

我正在使用Maven构建几个Eclipse项目。它基本上是几个库jar(因为我有共享代码),以及4个引用它们的Google App Engine项目。我已经设置了一个Windows批处理文件,以便在本地构建测试新代码时通过Maven命令行依次构建它们。

我在运行批处理文件时收到随机构建失败,抱怨它无法找到编译器。奇怪的是,如果我重新启动批处理文件,它将在第二次构建得很好。对于有更改的项目,脚本始终失败,但它并不总是相同的项目。我发现它几乎涉及链中的每个项目,以及图书馆项目和GAE WebApp项目。这对我来说很奇怪,因为这些项目大约90%的时间都能正确构建。我应该注意到我没有在Eclipse中构建错误,但是那些只会一次构建一个错误。

以下是我的批处理文件的编辑片段:

@REM Change to the Maven project dir
CD "%BASE_DIR%\[redacted]"
(mvn install 2>&1 & call doskey /exename=err err=%%^^errorlevel%%) | C:\utility\wtee.exe -a "%LOG_FILE%"
FOR /f "tokens=2 delims==" %%A IN ('doskey /m:err') DO SET RETURN_CODE=%%A
ECHO maven returned %RETURN_CODE%
@IF %RETURN_CODE% gtr 0 GOTO :END

这是控制台输出:

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building [redacted] 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ [redacted] ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\[redacted]\git\DEVON\Code\[redacted]\src\main\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ [redacted] ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 24 source files to C:\Users\[redacted]\git\DEVON\Code\[redacted]\target\[redacted]-0.0.1-SNAPSHOT\WEB-INF\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.139 s
[INFO] Finished at: 2016-06-28T14:15:45-07:00
[INFO] Final Memory: 13M/304M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5.1:compile (default-compile) on project [redacted]: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
maven returned 1 

我在这里搜索并搜索并使用Google,但所有建议都指向项目中的JDK设置不正确或Java编译器路径问题。但是我已经检查了所有这些,当然项目几乎一直都是正确构建的,当然如果我只是重新启动批处理文件就可以了。

供参考:

  • 使用Eclipse 4.5.2(Mars)
  • 使用Maven 3.3.9
  • 使用JDK 1.7.0.80
  • 所有项目都设置为"编译器合规级别" 1.7(因为GAE)
  • Java构建路径引用:
    • Google App Engine 1.9.37
    • JavaSE的-1.7

有没有人见过这样的东西?这不仅仅是一个阻碍者的烦恼,但任何解决它的帮助都会受到赞赏。

修改 添加-V开关后,我注意到Maven在日志中引用了一个jre:

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T09:41:47-07:00)
Maven home: C:\Utility\apache-maven-3.3.9\bin\..
Java version: 1.8.0_92, vendor: Oracle Corporation
Java home: c:\Program Files\java\jre1.8.0_92\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"
[INFO] Scanning for projects...

同样奇怪的是,这个编译很好,就像95%的情况一样,所以它大部分时间都使用JDK 或根本不会编译...

我尝试在批处理文件中将我的java家庭环境变量更改为c:\Program Files\java\jdk1.8.0_92,看看是否能解决它。

1 个答案:

答案 0 :(得分:0)

我会猜测,在执行脚本时,Java的路径不一致。尝试使用-v标志运行maven。这将使它告诉您正在运行的Java主目录和版本。你的java home应该是jdk安装,而不是jre安装。