|
|
@@ -1,93 +0,0 @@ |
|
|
|
/* Copyright (c) 2000 The Apache Software Foundation */ |
|
|
|
|
|
|
|
package org.apache.tools.ant.tasks; |
|
|
|
|
|
|
|
import java.lang.reflect.*; |
|
|
|
import java.io.*; |
|
|
|
import java.util.*; |
|
|
|
import org.apache.tools.ant.*; |
|
|
|
|
|
|
|
public class Javac extends Task { |
|
|
|
private Fileset[] fileset; |
|
|
|
private String dest; |
|
|
|
private String classpath; |
|
|
|
private String compilerclass = null; |
|
|
|
|
|
|
|
public void execute() throws BuildException { |
|
|
|
if (compilerclass == null) { |
|
|
|
compilerclass = "com.sun.tools.javac.Main"; |
|
|
|
} |
|
|
|
|
|
|
|
List argList = new ArrayList(); |
|
|
|
argList.add("-d"); |
|
|
|
argList.add(dest); |
|
|
|
|
|
|
|
if (classpath != null) { |
|
|
|
argList.add("-classpath"); |
|
|
|
|
|
|
|
// Replace the project's path separator with the system's path separator |
|
|
|
argList.add(classpath.replace(getProject().getPathSeparator(), File.pathSeparatorChar)); |
|
|
|
} |
|
|
|
|
|
|
|
for (int i = 0; i < fileset.length; i++) { |
|
|
|
fileset[i].getFiles(argList); |
|
|
|
} |
|
|
|
|
|
|
|
String[] args = (String[]) argList.toArray(new String[argList.size()]); |
|
|
|
|
|
|
|
try { |
|
|
|
new File(dest).mkdirs(); |
|
|
|
|
|
|
|
Class type = getClass().getClassLoader().loadClass(compilerclass); |
|
|
|
Method method = type.getMethod("main", new Class[] { args.getClass() }); |
|
|
|
|
|
|
|
getWorkspace().info("Running javac..."); |
|
|
|
|
|
|
|
method.invoke(null, new Object[] { args }); |
|
|
|
} |
|
|
|
catch(InvocationTargetException exc) { |
|
|
|
Throwable cause = exc.getTargetException(); |
|
|
|
if (cause instanceof ExitException) { |
|
|
|
if (((ExitException)cause).getStatus() != 0) { |
|
|
|
throw new BuildException("Compile failed"); |
|
|
|
} |
|
|
|
} |
|
|
|
else { |
|
|
|
throw new AntException("Error running compiler", exc); |
|
|
|
} |
|
|
|
} |
|
|
|
catch(ClassNotFoundException exc) { |
|
|
|
throw new BuildException("Compiler class not found. Makes sure tools.jar is in your classpath"); |
|
|
|
} |
|
|
|
catch(IllegalAccessException exc) { |
|
|
|
throw new AntException("Unable to access compiler class", exc); |
|
|
|
} |
|
|
|
catch(NoSuchMethodException exc) { |
|
|
|
throw new AntException("Unable to find main method on compiler class", exc); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public String getDest() { |
|
|
|
return dest; |
|
|
|
} |
|
|
|
|
|
|
|
public void setDest(String dest) { |
|
|
|
this.dest = dest; |
|
|
|
} |
|
|
|
|
|
|
|
public String getClasspath() { |
|
|
|
return classpath; |
|
|
|
} |
|
|
|
|
|
|
|
public void setClasspath(String classpath) { |
|
|
|
this.classpath = classpath; |
|
|
|
} |
|
|
|
|
|
|
|
public Fileset[] getFileset() { |
|
|
|
return fileset; |
|
|
|
} |
|
|
|
|
|
|
|
public void setFileset(Fileset[] fileset) { |
|
|
|
this.fileset = fileset; |
|
|
|
} |
|
|
|
} |