2013-03-05 89 views
2

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

Maven呢?谢谢。

回答

1

maven-compiler-plugin采用的这种控制为以下提的是: -

的Maven编译器插件 编译器插件是用来编译项目的源代码。默认编译器是javac,用于编译Java源代码。另请注意,目前默认的源设置为1.5,默认目标设置为1.5,与运行Maven的JDK无关。如果您想更改这些默认设置,则应按照Setting the -source and -target of the Java Compiler中所述设置源和目标。

我希望这可能有所帮助。

+0

感谢您的帮助。如果你想知道更多细节,请查看我的答案 – Antonio 2013-03-06 12:46:08

1

只是为了让你知道,javac编译器(如果指定“的javac”为目标的编译器,很明显),Maven的编译器插件内使用,装载这样:

首先,他尝试从类路径加载它。如果没有找到编译器,他会尝试从目录“java.home”(系统属性)中的lib/tools.jar中加载它。 这就像蚂蚁,或多或少。

这是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