具有不同项目目录路径的奇怪Maven行为

时间:2010-12-29 10:30:23

标签: maven maven-3

我有一个新的git克隆我的Java项目位于C:\ dev \ 1234567890(不要担心名称)并命令 mvn clean compile BUILD SUCCESS结束即可。 Maven怎么不编译我的项目中的所有类并再次命令 mvn compile (没有干净)编译其余的类。这意味着 mvn clean test 将因为缺少编译类而失败。

C:\dev\1234567890> mvn clean compile
...
[INFO] Compiling 708 source files to C:\dev\1234567890\target\classes
...
[INFO] ----------------------------------------------------------
[INFO] BUILD SUCCESS  
[INFO] ----------------------------------------------------------

C:\dev\1234567890>mvn compile
...
[INFO] Compiling 690 source files to C:\dev\1234567890\target\classes
...
[INFO] ----------------------------------------------------------
[INFO] BUILD SUCCESS  
[INFO] ----------------------------------------------------------

第三轮将告诉我所有课程都是最新的。

事情变得奇怪。以下操作将以成功构建结束(使用 mvn clean test )。

C:\dev\1234567890>cd ..
C:\dev>mv 1234567890 12345678901
C:\dev>cd 12345678901
C:\dev\12345678901>mvn clean test
...
[INFO] --------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] --------------------------------------------------------
[INFO] Total time: 19.955s
[INFO] Finished at: Wed Dec 29 11:57:52 EET 2010
[INFO] Final Memory: 4M/58M
[INFO] --------------------------------------------------------

然后,如果我将目录的名称更改为原始目录(或长度为10个字符),我将最终使用BUILD FAILURE。似乎只有目录名的长度才有所不同(所有< 11都会导致构建失败)。我错过了什么吗?有任何想法吗?我不在他们身边。

mvn -version
Apache Maven 3.0.1 (r1038046; 2010-11-23 12:58:32+0200)
Java version: 1.5.0_22
Java home: C:\Program Files (x86)\Java\jdk1.5.0_22\jre
Default locale: fi_FI, platform encoding: Cp1252
OS name: "windows 7" version: "6.1" arch: "x86" Family: "windows"

2 个答案:

答案 0 :(得分:0)

C:\dev\1234567890> mvn clean compile
[INFO] Compiling 708 source files to C:\dev\1234567890\target\classes

C:\dev\1234567890>mvn compile
[INFO] Compiling 690 source files to C:\dev\1234567890\target\classes

一个可能的解释是你有一些maven插件生成附加到编译阶段的Java源代码。在第一次调用中,它将在编译器之后执行并生成源,在第二次调用中源已经存在,因此编译器也将使用它们。

如果你有一个生成java源代码的插件,请始终将其映射到阶段generate-sourcesgenerate-test-sources

答案 1 :(得分:0)

我设法解决了从JDK 1.5切换到1.6的问题。但我仍然不知道为什么它与JDK 1.5无法正常工作。