是否有人知道Maven如何编写它的编译任务? 我知道Ant在类路径中查找“tools.jar”,并使用“com.sun.tools.javac.Main”作为编译器的入口点。Maven编译
Maven呢?谢谢。
是否有人知道Maven如何编写它的编译任务? 我知道Ant在类路径中查找“tools.jar”,并使用“com.sun.tools.javac.Main”作为编译器的入口点。Maven编译
Maven呢?谢谢。
的maven-compiler-plugin采用的这种控制为以下提的是: -
的Maven编译器插件 编译器插件是用来编译项目的源代码。默认编译器是javac,用于编译Java源代码。另请注意,目前默认的源设置为1.5,默认目标设置为1.5,与运行Maven的JDK无关。如果您想更改这些默认设置,则应按照Setting the -source and -target of the Java Compiler中所述设置源和目标。
我希望这可能有所帮助。
只是为了让你知道,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
感谢您的帮助。如果你想知道更多细节,请查看我的答案 – Antonio 2013-03-06 12:46:08