2013-03-05 84 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