Maven compilation



有人知道Maven是如何完成编译任务的吗?我知道Ant在类路径中查找"tools.jar",并使用"com.sun.tools.javac"。Main"作为编译器的入口。

Maven呢?谢谢。

maven-compiler-plugin通过以下方式控制:-

Maven编译器插件编译器插件用于编译项目的源代码。默认的编译器是javac,用于编译Java源代码。还要注意,目前默认的源代码设置是1.5,默认的目标设置是1.5,这与您运行Maven时使用的JDK无关。如果你想改变这些默认值,你应该像设置Java编译器的-source和-target中所描述的那样设置source和target。

只是让你知道,在maven编译器插件中使用的javac编译器(如果你指定'javac'作为目标编译器,显然)是这样加载的:

首先,他尝试从类路径加载

。如果没有找到编译器,他尝试从lib/tools.jar目录"java"中加载它。Home"(系统属性)。这或多或少有点像ANT。

这是来自org.codehaus.plexus.compiler.javac.JavacCompiler: 的代码片段
private static final String JAVAC_CLASSNAME = "com.sun.tools.javac.Main";
...
...
...
try {
    return JavacCompiler.class.getClassLoader().loadClass( JavacCompiler.JAVAC_CLASSNAME );
} catch ( ClassNotFoundException ex ) {
    // ok
}
final File toolsJar = new File( System.getProperty( "java.home" ), "../lib/tools.jar" );
if ( !toolsJar.exists() ) {
    throw new CompilerException( "tools.jar not found: " + toolsJar );
}
// then, he load the class using a URLClassLoader

相关内容

  • 没有找到相关文章

最新更新