Maven编译插件总是将一组源代码检测为“过时”。
Maven编译插件总是将一组源代码检测为“过时”。
已知maven-compiler-plugin 3.1中存在一个bug,每次运行mvn compile时会重新编译所有文件(而不是重用旧的类)。
使用mvn -X compile命令会报告以下信息:
[DEBUG] 检测到过时的源文件:/project_path/src/main/java/package_path/AFile1.java
[DEBUG] 检测到过时的源文件:/project_path/src/main/java/package_path/AFile2.java
...
(仅针对某个特定包中的文件,这些文件可能与代码的其余部分没有引用,这不是我的源文件,我只是试图将构建过程转换为maven)
编译不会失败,并且更新时间戳的类会生成在以下目录:
/project_path/target/classes/package_path/AFile1.class
/project_path/target/classes/package_path/AFile2.class
...
但是,查看时间戳时,java文件自昨天以来没有发生变化,而类文件是最新的。为什么这些源文件被认定为过时?我该如何调试此问题?
即使没有发生任何更改,每次都重新编译1k+个文件真是太麻烦了...
示例输出:
$ mvn clean compile
[INFO] 扫描项目...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] 正在构建MyProject 1.9.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] 未找到net.sourceforge:jffmpeg:jar:1.1.0的POM文件,无法提供依赖信息
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ my-project ---
[INFO] 正在删除/project_path/target
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ my-project ---
[debug] 执行上下文化
[INFO] 使用'UTF-8'编码复制过滤后的资源。
[INFO] 跳过不存在的资源目录/project_path/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ my-project ---
[INFO] 检测到变化 - 重新编译模块!
[INFO] 正在编译1162个源文件到/project_path/target/classes
....
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] 总时间:11.215s
[INFO] 完成时间:Tue Jul 30 12:42:25 CEST 2013
[INFO] 最终内存:25M/429M
[INFO] ------------------------------------------------------------------------
$ mvn compile
[INFO] 扫描项目...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] 正在构建MyProject 1.9.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] 未找到net.sourceforge:jffmpeg:jar:1.1.0的POM文件,无法提供依赖信息
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ my-project ---
[debug] 执行上下文化
[INFO] 使用'UTF-8'编码复制过滤后的资源。
[INFO] 跳过不存在的资源目录/project_path/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ my-project ---
[INFO] 检测到变化 - 重新编译模块!
[INFO] 正在编译1162个源文件到/project_path/target/classes
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] 总时间:12.140s
[INFO] 完成时间:Tue Jul 30 12:42:44 CEST 2013
[INFO] 最终内存:22M/379M
[INFO] ------------------------------------------------------------------------