Maven
和Gradle
默认使用增量构建,如果我没有弄错的话。
- 对于新的/首次构建,它会构建所有类文件。
- 在没有任何更改的情况下进行下一次构建时,不会构建任何类文件。
- 如果我修改了A.java,它会重新编译该模块。
是否有选项可以获取此构建中编译的类文件列表?
您觉得 maven.compiler.verbose
属性怎么样?
如果我将其设置为 true,我会得到以下结果之一:
% mvn compile -Dmaven.compiler.verbose=true 2>&1 | grep class
[INFO] Nothing to compile - all classes are up to date
A.java
文件。% mvn compile -Dmaven.compiler.verbose=true 2>&1 | grep class | grep wrote
[wrote RegularFileObject[/tmp/mvn-compile/target/classes/A.class]]
[wrote RegularFileObject[/tmp/mvn-compile/target/classes/B.class]]
... and other similar output
strace
)write
系统调用(符合posix标准的平台),并grep正在写入的.class
文件。-Dmaven.compiler.fork=true
,它会分叉javac
(曾经是默认值,但现在显然不是了)。您可以跟踪javac的参数,这些参数通过临时文件传递(仅在javac执行期间存在,例如,它是/tmp/org.codehaus.plexus.compiler.javac.JavacCompiler2179201625419771061arguments
)。您还可以cat
此文件并查看传递给javac以重新编译的文件。在我的情况下(Mac OS X),此文件存储在/tmp
中,并输出它,我简单地运行% cd /tmp; while true; do ls org.codehaus.plexus.compiler.javac.JavacCompiler* | xargs cat; sleep 1; done
zsh: no matches found: org.codehaus.plexus.compiler.javac.JavacCompiler*
zsh: no matches found: org.codehaus.plexus.compiler.javac.JavacCompiler*
zsh: no matches found: org.codehaus.plexus.compiler.javac.JavacCompiler*
"-d"
"/tmp/mvn-compile/target/classes"
"-classpath"
"/Users/stepan/.m2/repository/com/typesafe/config/1.3.0/config-1.3.0.jar:/Users/stepan/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.6.4/jackson-core-2.6.4.jar:"
"-sourcepath"
"/tmp/mvn-compile/src/main/java/A.java"
"/tmp/mvn-compile/src/main/java/B.java"
"-s"
"/tmp/mvn-compile/target/generated-sources/annotations"
"-g"
"-verbose"
"-nowarn"
"-target"
"1.8"
"-source"
"1.8"
"-encoding"
"UTF-8"
Info
不打印此信息。在调试模式下转储不会提供有关我的查询的有用信息。 - RaceBase