Browse Source

split execute in <javac> to make it easier to extend.

Sugested by:	Misha Dmitriev <Mikhail.Dmitriev@eng.sun.com>


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271223 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 23 years ago
parent
commit
d8169cab92
1 changed files with 61 additions and 41 deletions
  1. +61
    -41
      src/main/org/apache/tools/ant/taskdefs/Javac.java

+ 61
- 41
src/main/org/apache/tools/ant/taskdefs/Javac.java View File

@@ -574,19 +574,8 @@ public class Javac extends MatchingTask {
* Executes the task.
*/
public void execute() throws BuildException {
// first off, make sure that we've got a srcdir

if (src == null) {
throw new BuildException("srcdir attribute must be set!", location);
}
String [] list = src.list();
if (list.length == 0) {
throw new BuildException("srcdir attribute must be set!", location);
}

if (destDir != null && !destDir.isDirectory()) {
throw new BuildException("destination directory \"" + destDir + "\" does not exist or is not a directory", location);
}
checkParameters();
String[] list = src.list();

// scan source directories and dest directory to build up
// compile lists
@@ -594,42 +583,18 @@ public class Javac extends MatchingTask {
for (int i=0; i<list.length; i++) {
File srcDir = project.resolveFile(list[i]);
if (!srcDir.exists()) {
throw new BuildException("srcdir \"" + srcDir.getPath() + "\" does not exist!", location);
throw new BuildException("srcdir \""
+ srcDir.getPath()
+ "\" does not exist!", location);
}

DirectoryScanner ds = this.getDirectoryScanner(srcDir);

String[] files = ds.getIncludedFiles();

scanDir(srcDir, destDir != null ? destDir : srcDir, files);
}

// compile the source files

String compiler = determineCompiler();

if (compileList.length > 0) {

CompilerAdapter adapter = CompilerAdapterFactory.getCompiler(
compiler, this );
log("Compiling " + compileList.length +
" source file"
+ (compileList.length == 1 ? "" : "s")
+ (destDir != null ? " to " + destDir : ""));

// now we need to populate the compiler adapter
adapter.setJavac( this );

// finally, lets execute the compiler!!
if (!adapter.execute()) {
if (failOnError) {
throw new BuildException(FAIL_MSG, location);
}
else {
log(FAIL_MSG, Project.MSG_ERR);
}
}
}
compile();
}

/**
@@ -736,6 +701,61 @@ public class Javac extends MatchingTask {
return compiler;
}

/**
* Check that all required attributes have been set and nothing
* silly has been entered.
*
* @since 1.82, Ant 1.5
*/
protected void checkParameters() throws BuildException {
if (src == null) {
throw new BuildException("srcdir attribute must be set!",
location);
}
if (src.size() == 0) {
throw new BuildException("srcdir attribute must be set!",
location);
}

if (destDir != null && !destDir.isDirectory()) {
throw new BuildException("destination directory \""
+ destDir
+ "\" does not exist "
+ "or is not a directory", location);
}
}

/**
* Perform the compilation.
*
* @since 1.82, Ant 1.5
*/
protected void compile() {
String compiler = determineCompiler();

if (compileList.length > 0) {
log("Compiling " + compileList.length +
" source file"
+ (compileList.length == 1 ? "" : "s")
+ (destDir != null ? " to " + destDir : ""));

CompilerAdapter adapter =
CompilerAdapterFactory.getCompiler(compiler, this);

// now we need to populate the compiler adapter
adapter.setJavac(this);

// finally, lets execute the compiler!!
if (!adapter.execute()) {
if (failOnError) {
throw new BuildException(FAIL_MSG, location);
} else {
log(FAIL_MSG, Project.MSG_ERR);
}
}
}
}

/**
* Adds an "implementation" attribute to Commandline$Attribute
* used to filter command line attributes based on the current


Loading…
Cancel
Save