【问题标题】:Strange Maven behaviour with different project directory paths具有不同项目目录路径的奇怪 Maven 行为
【发布时间】:2010-12-29 10:30:23
【问题描述】:

我的 Java 项目有一个全新的 git 克隆,位于 C:\dev\1234567890(不用担心名称),命令 mvn clean compileBUILD 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。似乎只有目录名称的长度会有所不同(所有

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"

【问题讨论】:

    标签: maven maven-3


    【解决方案1】:
    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
    

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

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

    【讨论】:

    • 您好,谢谢您的回答。那些没有被编译的源代码已经在那里了。并且由于某种原因(我开始怀疑某种巫术),当我将项目目录名称更改为更长的时间时,它会起作用。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多