开发者

Strange Maven behaviour with different project directory paths

I have a fresh git clone of my Java project located at C:\dev\1234567890 (don't worry about the name yet) and commanding mvn clean compile ends with BUILD SUCCESS. How ever Maven does not compile all the classes in my project and commanding again mvn compile (without clean) compiles rest of the classes. This means that mvn clean test will fail because of missing compiled classes.

C:\dev\1234567890> mvn clean compile
...
[INFO] Compiling 708 source files to C:\dev\1234567890\target\classes
...
[INFO] ----------------------------------------------------------
[INFO] BUILD SUCCESS  
[INFO] -开发者_如何学JAVA---------------------------------------------------------

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

Third run will tell me that all classes are up to date.

Where things go weird. Following operations will end in a successful build (with 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] --------------------------------------------------------

Then again if I change the name of the directory to the original (or to what ever 10 characters long) I will end up with BUILD FAILURE. It seems that only the length of the directory name makes a difference (everything <11 will result a build failure). Am I missing something? Any ideas? I am out of them.

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"


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

One possible explanation would be that you have some maven plugin that generates Java Source code attached to the compile phase. In the first call, it would execute after the compiler and generate the sources, in the second call the sources would already be present, so the compiler would use them as well.

If you do have a plugin that generates java source, always map it to the phases generate-sources and generate-test-sources.


I managed to solve my problems switching from JDK 1.5 to 1.6. But I still have no clue why it didn't work properly with JDK 1.5.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜