git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271687 13f79535-47bb-0310-9956-ffa450edef68master
@@ -8,7 +8,6 @@ | |||
package org.apache.tools.ant.taskdefs.compilers; | |||
import org.apache.myrmidon.api.TaskException; | |||
import org.apache.tools.ant.taskdefs.Javac; | |||
/** | |||
* The interface that all compiler adapters must adher to. <p> | |||
@@ -16,7 +16,6 @@ import org.apache.avalon.excalibur.io.IOUtil; | |||
import org.apache.avalon.excalibur.util.StringUtil; | |||
import org.apache.avalon.framework.logger.AbstractLogEnabled; | |||
import org.apache.myrmidon.api.TaskException; | |||
import org.apache.tools.ant.taskdefs.Javac; | |||
import org.apache.myrmidon.framework.Execute; | |||
import org.apache.tools.ant.types.Commandline; | |||
import org.apache.tools.ant.types.Path; | |||
@@ -71,7 +70,7 @@ public abstract class DefaultCompilerAdapter | |||
m_destDir = attributes.getDestdir(); | |||
m_encoding = attributes.getEncoding(); | |||
m_debug = attributes.getDebug(); | |||
m_optimize = attributes.getOptimize(); | |||
m_optimize = attributes.isOptimize(); | |||
m_deprecation = attributes.getDeprecation(); | |||
m_depend = attributes.getDepend(); | |||
m_verbose = attributes.getVerbose(); | |||
@@ -0,0 +1,43 @@ | |||
/* | |||
* Copyright (C) The Apache Software Foundation. All rights reserved. | |||
* | |||
* This software is published under the terms of the Apache Software License | |||
* version 1.1, a copy of which has been included with this distribution in | |||
* the LICENSE.txt file. | |||
*/ | |||
package org.apache.tools.ant.taskdefs.compilers; | |||
import org.apache.tools.ant.types.Argument; | |||
/** | |||
* Adds an "implementation" attribute to Commandline$Attribute used to | |||
* filter command line attributes based on the current implementation. | |||
*/ | |||
public class ImplementationSpecificArgument | |||
extends Argument | |||
{ | |||
private String m_impl; | |||
private Javac m_javac; | |||
public ImplementationSpecificArgument( Javac javac ) | |||
{ | |||
m_javac = javac; | |||
} | |||
public void setImplementation( String impl ) | |||
{ | |||
this.m_impl = impl; | |||
} | |||
public String[] getParts() | |||
{ | |||
if( m_impl == null || m_impl.equals( m_javac.determineCompiler() ) ) | |||
{ | |||
return super.getParts(); | |||
} | |||
else | |||
{ | |||
return new String[ 0 ]; | |||
} | |||
} | |||
} |
@@ -5,7 +5,7 @@ | |||
* version 1.1, a copy of which has been included with this distribution in | |||
* the LICENSE.txt file. | |||
*/ | |||
package org.apache.tools.ant.taskdefs; | |||
package org.apache.tools.ant.taskdefs.compilers; | |||
import java.io.File; | |||
import java.util.ArrayList; | |||
@@ -13,13 +13,11 @@ import java.util.Iterator; | |||
import org.apache.aut.nativelib.Os; | |||
import org.apache.myrmidon.api.TaskException; | |||
import org.apache.myrmidon.framework.JavaVersion; | |||
import org.apache.tools.ant.taskdefs.compilers.CompilerAdapter; | |||
import org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory; | |||
import org.apache.tools.ant.types.Argument; | |||
import org.apache.tools.ant.types.DirectoryScanner; | |||
import org.apache.tools.ant.types.Path; | |||
import org.apache.tools.ant.types.SourceFileScanner; | |||
import org.apache.tools.ant.util.mappers.GlobPatternMapper; | |||
import org.apache.tools.ant.taskdefs.MatchingTask; | |||
/** | |||
* Task to compile Java source files. This task can take the following | |||
@@ -54,84 +52,74 @@ import org.apache.tools.ant.util.mappers.GlobPatternMapper; | |||
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | |||
* @author <a href="mailto:jayglanville@home.com">J D Glanville</a> | |||
*/ | |||
public class Javac extends MatchingTask | |||
public class Javac | |||
extends MatchingTask | |||
{ | |||
private final static String FAIL_MSG | |||
= "Compile failed, messages should have been provided."; | |||
private boolean debug = false; | |||
private boolean optimize = false; | |||
private boolean deprecation = false; | |||
private boolean depend = false; | |||
private boolean verbose = false; | |||
private boolean includeAntRuntime = true; | |||
private boolean includeJavaRuntime = false; | |||
private String fork = "false"; | |||
private String forkedExecutable = null; | |||
private boolean nowarn = false; | |||
private ArrayList implementationSpecificArgs = new ArrayList(); | |||
protected boolean failOnError = true; | |||
protected File[] compileList = new File[ 0 ]; | |||
private Path bootclasspath; | |||
private Path compileClasspath; | |||
private String debugLevel; | |||
private File destDir; | |||
private String encoding; | |||
private Path extdirs; | |||
private String memoryInitialSize; | |||
private String memoryMaximumSize; | |||
private String source; | |||
private Path src; | |||
private String target; | |||
private boolean m_debug; | |||
private boolean m_optimize; | |||
private boolean m_deprecation; | |||
private boolean m_depend; | |||
private boolean m_verbose; | |||
private boolean m_includeAntRuntime = true; | |||
private boolean m_includeJavaRuntime; | |||
private boolean m_fork; | |||
private String m_forkedExecutable; | |||
private boolean m_nowarn; | |||
private ArrayList m_implementationSpecificArgs = new ArrayList(); | |||
protected File[] m_compileList = new File[ 0 ]; | |||
private Path m_bootclasspath; | |||
private Path m_compileClasspath; | |||
private String m_debugLevel; | |||
private File m_destDir; | |||
private String m_encoding; | |||
private Path m_extdirs; | |||
private String m_memoryInitialSize; | |||
private String m_memoryMaximumSize; | |||
private String m_source; | |||
private Path m_src; | |||
private String m_target; | |||
/** | |||
* Adds an element to the bootclasspath that will be used to compile the | |||
* classes against. | |||
* | |||
* @param bootclasspath The new Bootclasspath value | |||
*/ | |||
public void addBootclasspath( Path bootclasspath ) | |||
throws TaskException | |||
{ | |||
if( this.bootclasspath == null ) | |||
if( m_bootclasspath == null ) | |||
{ | |||
this.bootclasspath = bootclasspath; | |||
m_bootclasspath = bootclasspath; | |||
} | |||
else | |||
{ | |||
this.bootclasspath.addPath( bootclasspath ); | |||
m_bootclasspath.addPath( bootclasspath ); | |||
} | |||
} | |||
/** | |||
* Adds an element to the classpath to be used for this compilation. | |||
* | |||
* @param classpath The new Classpath value | |||
*/ | |||
public void addClasspath( Path classpath ) | |||
throws TaskException | |||
{ | |||
if( compileClasspath == null ) | |||
if( m_compileClasspath == null ) | |||
{ | |||
compileClasspath = classpath; | |||
m_compileClasspath = classpath; | |||
} | |||
else | |||
{ | |||
compileClasspath.addPath( classpath ); | |||
m_compileClasspath.addPath( classpath ); | |||
} | |||
} | |||
/** | |||
* Set the debug flag. | |||
* | |||
* @param debug The new Debug value | |||
*/ | |||
public void setDebug( boolean debug ) | |||
public void setDebug( final boolean debug ) | |||
{ | |||
this.debug = debug; | |||
m_debug = debug; | |||
} | |||
/** | |||
@@ -141,7 +129,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setDebugLevel( String v ) | |||
{ | |||
this.debugLevel = v; | |||
m_debugLevel = v; | |||
} | |||
/** | |||
@@ -151,7 +139,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setDepend( boolean depend ) | |||
{ | |||
this.depend = depend; | |||
m_depend = depend; | |||
} | |||
/** | |||
@@ -161,7 +149,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setDeprecation( boolean deprecation ) | |||
{ | |||
this.deprecation = deprecation; | |||
m_deprecation = deprecation; | |||
} | |||
/** | |||
@@ -172,7 +160,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setDestdir( File destDir ) | |||
{ | |||
this.destDir = destDir; | |||
m_destDir = destDir; | |||
} | |||
/** | |||
@@ -182,7 +170,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setEncoding( String encoding ) | |||
{ | |||
this.encoding = encoding; | |||
m_encoding = encoding; | |||
} | |||
/** | |||
@@ -194,51 +182,25 @@ public class Javac extends MatchingTask | |||
public void addExtdirs( Path extdirs ) | |||
throws TaskException | |||
{ | |||
if( this.extdirs == null ) | |||
if( m_extdirs == null ) | |||
{ | |||
this.extdirs = extdirs; | |||
m_extdirs = extdirs; | |||
} | |||
else | |||
{ | |||
this.extdirs.addPath( extdirs ); | |||
m_extdirs.addPath( extdirs ); | |||
} | |||
} | |||
/** | |||
* Throw a TaskException if compilation fails | |||
* | |||
* @param fail The new Failonerror value | |||
*/ | |||
public void setFailonerror( boolean fail ) | |||
{ | |||
failOnError = fail; | |||
} | |||
/** | |||
* Sets whether to fork the javac compiler. | |||
* | |||
* @param f "true|false|on|off|yes|no" or the name of the javac executable. | |||
*/ | |||
public void setFork( String f ) | |||
public void setFork( final boolean fork ) | |||
{ | |||
if( f.equalsIgnoreCase( "on" ) | |||
|| f.equalsIgnoreCase( "true" ) | |||
|| f.equalsIgnoreCase( "yes" ) ) | |||
m_fork = fork; | |||
if( fork ) | |||
{ | |||
fork = "true"; | |||
forkedExecutable = getSystemJavac(); | |||
} | |||
else if( f.equalsIgnoreCase( "off" ) | |||
|| f.equalsIgnoreCase( "false" ) | |||
|| f.equalsIgnoreCase( "no" ) ) | |||
{ | |||
fork = "false"; | |||
forkedExecutable = null; | |||
} | |||
else | |||
{ | |||
fork = "true"; | |||
forkedExecutable = f; | |||
m_forkedExecutable = getSystemJavac(); | |||
} | |||
} | |||
@@ -249,7 +211,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setIncludeantruntime( boolean include ) | |||
{ | |||
includeAntRuntime = include; | |||
m_includeAntRuntime = include; | |||
} | |||
/** | |||
@@ -260,7 +222,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setIncludejavaruntime( boolean include ) | |||
{ | |||
includeJavaRuntime = include; | |||
m_includeJavaRuntime = include; | |||
} | |||
/** | |||
@@ -270,7 +232,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setMemoryInitialSize( String memoryInitialSize ) | |||
{ | |||
this.memoryInitialSize = memoryInitialSize; | |||
m_memoryInitialSize = memoryInitialSize; | |||
} | |||
/** | |||
@@ -280,7 +242,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setMemoryMaximumSize( String memoryMaximumSize ) | |||
{ | |||
this.memoryMaximumSize = memoryMaximumSize; | |||
m_memoryMaximumSize = memoryMaximumSize; | |||
} | |||
/** | |||
@@ -290,7 +252,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setNowarn( boolean flag ) | |||
{ | |||
this.nowarn = flag; | |||
m_nowarn = flag; | |||
} | |||
/** | |||
@@ -300,17 +262,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setOptimize( boolean optimize ) | |||
{ | |||
this.optimize = optimize; | |||
} | |||
/** | |||
* Proceed if compilation fails | |||
* | |||
* @param proceed The new Proceed value | |||
*/ | |||
public void setProceed( boolean proceed ) | |||
{ | |||
failOnError = !proceed; | |||
m_optimize = optimize; | |||
} | |||
/** | |||
@@ -320,7 +272,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setSource( String v ) | |||
{ | |||
this.source = v; | |||
m_source = v; | |||
} | |||
/** | |||
@@ -331,13 +283,13 @@ public class Javac extends MatchingTask | |||
public void addSrcdir( Path srcDir ) | |||
throws TaskException | |||
{ | |||
if( src == null ) | |||
if( m_src == null ) | |||
{ | |||
src = srcDir; | |||
m_src = srcDir; | |||
} | |||
else | |||
{ | |||
src.addPath( srcDir ); | |||
m_src.addPath( srcDir ); | |||
} | |||
} | |||
@@ -349,7 +301,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setTarget( String target ) | |||
{ | |||
this.target = target; | |||
m_target = target; | |||
} | |||
/** | |||
@@ -359,7 +311,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setVerbose( boolean verbose ) | |||
{ | |||
this.verbose = verbose; | |||
m_verbose = verbose; | |||
} | |||
/** | |||
@@ -369,7 +321,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public Path getBootclasspath() | |||
{ | |||
return bootclasspath; | |||
return m_bootclasspath; | |||
} | |||
/** | |||
@@ -379,7 +331,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public Path getClasspath() | |||
{ | |||
return compileClasspath; | |||
return m_compileClasspath; | |||
} | |||
protected File getBaseDir() | |||
@@ -395,7 +347,7 @@ public class Javac extends MatchingTask | |||
public String[] getCurrentCompilerArgs() | |||
{ | |||
ArrayList args = new ArrayList(); | |||
for( Iterator enum = implementationSpecificArgs.iterator(); | |||
for( Iterator enum = m_implementationSpecificArgs.iterator(); | |||
enum.hasNext(); | |||
) | |||
{ | |||
@@ -417,7 +369,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean getDebug() | |||
{ | |||
return debug; | |||
return m_debug; | |||
} | |||
/** | |||
@@ -427,7 +379,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public String getDebugLevel() | |||
{ | |||
return debugLevel; | |||
return m_debugLevel; | |||
} | |||
/** | |||
@@ -437,7 +389,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean getDepend() | |||
{ | |||
return depend; | |||
return m_depend; | |||
} | |||
/** | |||
@@ -447,7 +399,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean getDeprecation() | |||
{ | |||
return deprecation; | |||
return m_deprecation; | |||
} | |||
/** | |||
@@ -458,7 +410,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public File getDestdir() | |||
{ | |||
return destDir; | |||
return m_destDir; | |||
} | |||
/** | |||
@@ -468,7 +420,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public String getEncoding() | |||
{ | |||
return encoding; | |||
return m_encoding; | |||
} | |||
/** | |||
@@ -478,17 +430,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public Path getExtdirs() | |||
{ | |||
return extdirs; | |||
} | |||
/** | |||
* Gets the failonerror flag. | |||
* | |||
* @return The Failonerror value | |||
*/ | |||
public boolean getFailonerror() | |||
{ | |||
return failOnError; | |||
return m_extdirs; | |||
} | |||
/** | |||
@@ -498,7 +440,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public File[] getFileList() | |||
{ | |||
return compileList; | |||
return m_compileList; | |||
} | |||
/** | |||
@@ -509,7 +451,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean getIncludeantruntime() | |||
{ | |||
return includeAntRuntime; | |||
return m_includeAntRuntime; | |||
} | |||
/** | |||
@@ -520,7 +462,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean getIncludejavaruntime() | |||
{ | |||
return includeJavaRuntime; | |||
return m_includeJavaRuntime; | |||
} | |||
/** | |||
@@ -530,15 +472,15 @@ public class Javac extends MatchingTask | |||
*/ | |||
public String getJavacExecutable() | |||
{ | |||
if( forkedExecutable == null && isForkedJavac() ) | |||
if( m_forkedExecutable == null && isForkedJavac() ) | |||
{ | |||
forkedExecutable = getSystemJavac(); | |||
m_forkedExecutable = getSystemJavac(); | |||
} | |||
else if( forkedExecutable != null && !isForkedJavac() ) | |||
else if( m_forkedExecutable != null && !isForkedJavac() ) | |||
{ | |||
forkedExecutable = null; | |||
m_forkedExecutable = null; | |||
} | |||
return forkedExecutable; | |||
return m_forkedExecutable; | |||
} | |||
/** | |||
@@ -548,7 +490,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public String getMemoryInitialSize() | |||
{ | |||
return memoryInitialSize; | |||
return m_memoryInitialSize; | |||
} | |||
/** | |||
@@ -558,7 +500,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public String getMemoryMaximumSize() | |||
{ | |||
return memoryMaximumSize; | |||
return m_memoryMaximumSize; | |||
} | |||
/** | |||
@@ -568,7 +510,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean getNowarn() | |||
{ | |||
return nowarn; | |||
return m_nowarn; | |||
} | |||
/** | |||
@@ -576,9 +518,9 @@ public class Javac extends MatchingTask | |||
* | |||
* @return The Optimize value | |||
*/ | |||
public boolean getOptimize() | |||
public boolean isOptimize() | |||
{ | |||
return optimize; | |||
return m_optimize; | |||
} | |||
/** | |||
@@ -588,7 +530,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public String getSource() | |||
{ | |||
return source; | |||
return m_source; | |||
} | |||
/** | |||
@@ -598,7 +540,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public Path getSrcdir() | |||
{ | |||
return src; | |||
return m_src; | |||
} | |||
/** | |||
@@ -608,7 +550,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public String getTarget() | |||
{ | |||
return target; | |||
return m_target; | |||
} | |||
/** | |||
@@ -618,7 +560,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean getVerbose() | |||
{ | |||
return verbose; | |||
return m_verbose; | |||
} | |||
/** | |||
@@ -628,8 +570,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean isForkedJavac() | |||
{ | |||
return !"false".equals( fork ) || | |||
"extJavac".equals( getContext().getProperty( "build.compiler" ) ); | |||
return m_fork; | |||
} | |||
/** | |||
@@ -637,11 +578,11 @@ public class Javac extends MatchingTask | |||
* | |||
* @return Description of the Returned Value | |||
*/ | |||
public ImplementationSpecificArgument createCompilerArg() | |||
public org.apache.tools.ant.taskdefs.compilers.ImplementationSpecificArgument createCompilerArg() | |||
{ | |||
ImplementationSpecificArgument arg = | |||
new ImplementationSpecificArgument(); | |||
implementationSpecificArgs.add( arg ); | |||
org.apache.tools.ant.taskdefs.compilers.ImplementationSpecificArgument arg = | |||
new org.apache.tools.ant.taskdefs.compilers.ImplementationSpecificArgument( this ); | |||
m_implementationSpecificArgs.add( arg ); | |||
return arg; | |||
} | |||
@@ -655,19 +596,19 @@ public class Javac extends MatchingTask | |||
{ | |||
// first off, make sure that we've got a srcdir | |||
if( src == null ) | |||
if( m_src == null ) | |||
{ | |||
throw new TaskException( "srcdir attribute must be set!" ); | |||
} | |||
String[] list = src.list(); | |||
String[] list = m_src.list(); | |||
if( list.length == 0 ) | |||
{ | |||
throw new TaskException( "srcdir attribute must be set!" ); | |||
} | |||
if( destDir != null && !destDir.isDirectory() ) | |||
if( m_destDir != null && !m_destDir.isDirectory() ) | |||
{ | |||
throw new TaskException( "destination directory \"" + destDir + "\" does not exist or is not a directory" ); | |||
throw new TaskException( "destination directory \"" + m_destDir + "\" does not exist or is not a directory" ); | |||
} | |||
// scan source directories and dest directory to build up | |||
@@ -682,25 +623,25 @@ public class Javac extends MatchingTask | |||
throw new TaskException( "srcdir \"" + srcDir.getPath() + "\" does not exist!" ); | |||
} | |||
DirectoryScanner ds = this.getDirectoryScanner( srcDir ); | |||
DirectoryScanner ds = getDirectoryScanner( srcDir ); | |||
String[] files = ds.getIncludedFiles(); | |||
scanDir( srcDir, destDir != null ? destDir : srcDir, files ); | |||
scanDir( srcDir, m_destDir != null ? m_destDir : srcDir, files ); | |||
} | |||
// compile the source files | |||
String compiler = determineCompiler(); | |||
if( compileList.length > 0 ) | |||
if( m_compileList.length > 0 ) | |||
{ | |||
CompilerAdapter adapter = CompilerAdapterFactory.getCompiler( | |||
compiler, getLogger() ); | |||
final String message = "Compiling " + compileList.length + " source file" + | |||
( compileList.length == 1 ? "" : "s" ) + | |||
( destDir != null ? " to " + destDir : "" ); | |||
final String message = "Compiling " + m_compileList.length + " source file" + | |||
( m_compileList.length == 1 ? "" : "s" ) + | |||
( m_destDir != null ? " to " + m_destDir : "" ); | |||
getLogger().info( message ); | |||
// now we need to populate the compiler adapter | |||
@@ -709,14 +650,7 @@ public class Javac extends MatchingTask | |||
// finally, lets execute the compiler!! | |||
if( !adapter.execute() ) | |||
{ | |||
if( failOnError ) | |||
{ | |||
throw new TaskException( FAIL_MSG ); | |||
} | |||
else | |||
{ | |||
getLogger().error( FAIL_MSG ); | |||
} | |||
throw new TaskException( FAIL_MSG ); | |||
} | |||
} | |||
} | |||
@@ -731,8 +665,8 @@ public class Javac extends MatchingTask | |||
// on Windows java.home doesn't always refer to the correct location, | |||
// so we need to fall back to assuming java is somewhere on the | |||
// PATH. | |||
java.io.File jExecutable = | |||
new java.io.File( System.getProperty( "java.home" ) + | |||
File jExecutable = | |||
new File( System.getProperty( "java.home" ) + | |||
"/../bin/javac" + extension ); | |||
if( jExecutable.exists() && !Os.isFamily( Os.OS_FAMILY_NETWARE ) ) | |||
@@ -760,7 +694,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
protected void resetFileLists() | |||
{ | |||
compileList = new File[ 0 ]; | |||
m_compileList = new File[ 0 ]; | |||
} | |||
/** | |||
@@ -783,40 +717,36 @@ public class Javac extends MatchingTask | |||
if( newFiles.length > 0 ) | |||
{ | |||
File[] newCompileList = new File[ compileList.length + | |||
File[] newCompileList = new File[ m_compileList.length + | |||
newFiles.length ]; | |||
System.arraycopy( compileList, 0, newCompileList, 0, | |||
compileList.length ); | |||
System.arraycopy( m_compileList, 0, newCompileList, 0, | |||
m_compileList.length ); | |||
System.arraycopy( newFiles, 0, newCompileList, | |||
compileList.length, newFiles.length ); | |||
compileList = newCompileList; | |||
m_compileList.length, newFiles.length ); | |||
m_compileList = newCompileList; | |||
} | |||
} | |||
private String determineCompiler() | |||
protected String determineCompiler() | |||
{ | |||
Object compiler = getContext().getProperty( "build.compiler" ); | |||
if( !"false".equals( fork ) ) | |||
if( compiler != null ) | |||
{ | |||
if( compiler != null ) | |||
if( isJdkCompiler( compiler.toString() ) ) | |||
{ | |||
if( isJdkCompiler( compiler.toString() ) ) | |||
{ | |||
final String message = "Since fork is true, ignoring build.compiler setting."; | |||
getLogger().warn( message ); | |||
compiler = "extJavac"; | |||
} | |||
else | |||
{ | |||
getLogger().warn( "Since build.compiler setting isn't classic or modern, ignoring fork setting." ); | |||
} | |||
final String message = "Since fork is true, ignoring build.compiler setting."; | |||
getLogger().warn( message ); | |||
compiler = "extJavac"; | |||
} | |||
else | |||
{ | |||
compiler = "extJavac"; | |||
getLogger().warn( "Since build.compiler setting isn't classic or modern, ignoring fork setting." ); | |||
} | |||
} | |||
else | |||
{ | |||
compiler = "extJavac"; | |||
} | |||
if( compiler == null ) | |||
{ | |||
@@ -831,35 +761,4 @@ public class Javac extends MatchingTask | |||
} | |||
return compiler.toString(); | |||
} | |||
/** | |||
* Adds an "implementation" attribute to Commandline$Attribute used to | |||
* filter command line attributes based on the current implementation. | |||
* | |||
* @author RT | |||
*/ | |||
public class ImplementationSpecificArgument | |||
extends Argument | |||
{ | |||
private String impl; | |||
public void setImplementation( String impl ) | |||
{ | |||
this.impl = impl; | |||
} | |||
public String[] getParts() | |||
{ | |||
if( impl == null || impl.equals( determineCompiler() ) ) | |||
{ | |||
return super.getParts(); | |||
} | |||
else | |||
{ | |||
return new String[ 0 ]; | |||
} | |||
} | |||
} | |||
} |
@@ -8,7 +8,6 @@ | |||
package org.apache.tools.ant.taskdefs.compilers; | |||
import org.apache.myrmidon.api.TaskException; | |||
import org.apache.tools.ant.taskdefs.Javac; | |||
/** | |||
* The interface that all compiler adapters must adher to. <p> | |||
@@ -16,7 +16,6 @@ import org.apache.avalon.excalibur.io.IOUtil; | |||
import org.apache.avalon.excalibur.util.StringUtil; | |||
import org.apache.avalon.framework.logger.AbstractLogEnabled; | |||
import org.apache.myrmidon.api.TaskException; | |||
import org.apache.tools.ant.taskdefs.Javac; | |||
import org.apache.myrmidon.framework.Execute; | |||
import org.apache.tools.ant.types.Commandline; | |||
import org.apache.tools.ant.types.Path; | |||
@@ -71,7 +70,7 @@ public abstract class DefaultCompilerAdapter | |||
m_destDir = attributes.getDestdir(); | |||
m_encoding = attributes.getEncoding(); | |||
m_debug = attributes.getDebug(); | |||
m_optimize = attributes.getOptimize(); | |||
m_optimize = attributes.isOptimize(); | |||
m_deprecation = attributes.getDeprecation(); | |||
m_depend = attributes.getDepend(); | |||
m_verbose = attributes.getVerbose(); | |||
@@ -0,0 +1,43 @@ | |||
/* | |||
* Copyright (C) The Apache Software Foundation. All rights reserved. | |||
* | |||
* This software is published under the terms of the Apache Software License | |||
* version 1.1, a copy of which has been included with this distribution in | |||
* the LICENSE.txt file. | |||
*/ | |||
package org.apache.tools.ant.taskdefs.compilers; | |||
import org.apache.tools.ant.types.Argument; | |||
/** | |||
* Adds an "implementation" attribute to Commandline$Attribute used to | |||
* filter command line attributes based on the current implementation. | |||
*/ | |||
public class ImplementationSpecificArgument | |||
extends Argument | |||
{ | |||
private String m_impl; | |||
private Javac m_javac; | |||
public ImplementationSpecificArgument( Javac javac ) | |||
{ | |||
m_javac = javac; | |||
} | |||
public void setImplementation( String impl ) | |||
{ | |||
this.m_impl = impl; | |||
} | |||
public String[] getParts() | |||
{ | |||
if( m_impl == null || m_impl.equals( m_javac.determineCompiler() ) ) | |||
{ | |||
return super.getParts(); | |||
} | |||
else | |||
{ | |||
return new String[ 0 ]; | |||
} | |||
} | |||
} |
@@ -5,7 +5,7 @@ | |||
* version 1.1, a copy of which has been included with this distribution in | |||
* the LICENSE.txt file. | |||
*/ | |||
package org.apache.tools.ant.taskdefs; | |||
package org.apache.tools.ant.taskdefs.compilers; | |||
import java.io.File; | |||
import java.util.ArrayList; | |||
@@ -13,13 +13,11 @@ import java.util.Iterator; | |||
import org.apache.aut.nativelib.Os; | |||
import org.apache.myrmidon.api.TaskException; | |||
import org.apache.myrmidon.framework.JavaVersion; | |||
import org.apache.tools.ant.taskdefs.compilers.CompilerAdapter; | |||
import org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory; | |||
import org.apache.tools.ant.types.Argument; | |||
import org.apache.tools.ant.types.DirectoryScanner; | |||
import org.apache.tools.ant.types.Path; | |||
import org.apache.tools.ant.types.SourceFileScanner; | |||
import org.apache.tools.ant.util.mappers.GlobPatternMapper; | |||
import org.apache.tools.ant.taskdefs.MatchingTask; | |||
/** | |||
* Task to compile Java source files. This task can take the following | |||
@@ -54,84 +52,74 @@ import org.apache.tools.ant.util.mappers.GlobPatternMapper; | |||
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | |||
* @author <a href="mailto:jayglanville@home.com">J D Glanville</a> | |||
*/ | |||
public class Javac extends MatchingTask | |||
public class Javac | |||
extends MatchingTask | |||
{ | |||
private final static String FAIL_MSG | |||
= "Compile failed, messages should have been provided."; | |||
private boolean debug = false; | |||
private boolean optimize = false; | |||
private boolean deprecation = false; | |||
private boolean depend = false; | |||
private boolean verbose = false; | |||
private boolean includeAntRuntime = true; | |||
private boolean includeJavaRuntime = false; | |||
private String fork = "false"; | |||
private String forkedExecutable = null; | |||
private boolean nowarn = false; | |||
private ArrayList implementationSpecificArgs = new ArrayList(); | |||
protected boolean failOnError = true; | |||
protected File[] compileList = new File[ 0 ]; | |||
private Path bootclasspath; | |||
private Path compileClasspath; | |||
private String debugLevel; | |||
private File destDir; | |||
private String encoding; | |||
private Path extdirs; | |||
private String memoryInitialSize; | |||
private String memoryMaximumSize; | |||
private String source; | |||
private Path src; | |||
private String target; | |||
private boolean m_debug; | |||
private boolean m_optimize; | |||
private boolean m_deprecation; | |||
private boolean m_depend; | |||
private boolean m_verbose; | |||
private boolean m_includeAntRuntime = true; | |||
private boolean m_includeJavaRuntime; | |||
private boolean m_fork; | |||
private String m_forkedExecutable; | |||
private boolean m_nowarn; | |||
private ArrayList m_implementationSpecificArgs = new ArrayList(); | |||
protected File[] m_compileList = new File[ 0 ]; | |||
private Path m_bootclasspath; | |||
private Path m_compileClasspath; | |||
private String m_debugLevel; | |||
private File m_destDir; | |||
private String m_encoding; | |||
private Path m_extdirs; | |||
private String m_memoryInitialSize; | |||
private String m_memoryMaximumSize; | |||
private String m_source; | |||
private Path m_src; | |||
private String m_target; | |||
/** | |||
* Adds an element to the bootclasspath that will be used to compile the | |||
* classes against. | |||
* | |||
* @param bootclasspath The new Bootclasspath value | |||
*/ | |||
public void addBootclasspath( Path bootclasspath ) | |||
throws TaskException | |||
{ | |||
if( this.bootclasspath == null ) | |||
if( m_bootclasspath == null ) | |||
{ | |||
this.bootclasspath = bootclasspath; | |||
m_bootclasspath = bootclasspath; | |||
} | |||
else | |||
{ | |||
this.bootclasspath.addPath( bootclasspath ); | |||
m_bootclasspath.addPath( bootclasspath ); | |||
} | |||
} | |||
/** | |||
* Adds an element to the classpath to be used for this compilation. | |||
* | |||
* @param classpath The new Classpath value | |||
*/ | |||
public void addClasspath( Path classpath ) | |||
throws TaskException | |||
{ | |||
if( compileClasspath == null ) | |||
if( m_compileClasspath == null ) | |||
{ | |||
compileClasspath = classpath; | |||
m_compileClasspath = classpath; | |||
} | |||
else | |||
{ | |||
compileClasspath.addPath( classpath ); | |||
m_compileClasspath.addPath( classpath ); | |||
} | |||
} | |||
/** | |||
* Set the debug flag. | |||
* | |||
* @param debug The new Debug value | |||
*/ | |||
public void setDebug( boolean debug ) | |||
public void setDebug( final boolean debug ) | |||
{ | |||
this.debug = debug; | |||
m_debug = debug; | |||
} | |||
/** | |||
@@ -141,7 +129,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setDebugLevel( String v ) | |||
{ | |||
this.debugLevel = v; | |||
m_debugLevel = v; | |||
} | |||
/** | |||
@@ -151,7 +139,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setDepend( boolean depend ) | |||
{ | |||
this.depend = depend; | |||
m_depend = depend; | |||
} | |||
/** | |||
@@ -161,7 +149,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setDeprecation( boolean deprecation ) | |||
{ | |||
this.deprecation = deprecation; | |||
m_deprecation = deprecation; | |||
} | |||
/** | |||
@@ -172,7 +160,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setDestdir( File destDir ) | |||
{ | |||
this.destDir = destDir; | |||
m_destDir = destDir; | |||
} | |||
/** | |||
@@ -182,7 +170,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setEncoding( String encoding ) | |||
{ | |||
this.encoding = encoding; | |||
m_encoding = encoding; | |||
} | |||
/** | |||
@@ -194,51 +182,25 @@ public class Javac extends MatchingTask | |||
public void addExtdirs( Path extdirs ) | |||
throws TaskException | |||
{ | |||
if( this.extdirs == null ) | |||
if( m_extdirs == null ) | |||
{ | |||
this.extdirs = extdirs; | |||
m_extdirs = extdirs; | |||
} | |||
else | |||
{ | |||
this.extdirs.addPath( extdirs ); | |||
m_extdirs.addPath( extdirs ); | |||
} | |||
} | |||
/** | |||
* Throw a TaskException if compilation fails | |||
* | |||
* @param fail The new Failonerror value | |||
*/ | |||
public void setFailonerror( boolean fail ) | |||
{ | |||
failOnError = fail; | |||
} | |||
/** | |||
* Sets whether to fork the javac compiler. | |||
* | |||
* @param f "true|false|on|off|yes|no" or the name of the javac executable. | |||
*/ | |||
public void setFork( String f ) | |||
public void setFork( final boolean fork ) | |||
{ | |||
if( f.equalsIgnoreCase( "on" ) | |||
|| f.equalsIgnoreCase( "true" ) | |||
|| f.equalsIgnoreCase( "yes" ) ) | |||
m_fork = fork; | |||
if( fork ) | |||
{ | |||
fork = "true"; | |||
forkedExecutable = getSystemJavac(); | |||
} | |||
else if( f.equalsIgnoreCase( "off" ) | |||
|| f.equalsIgnoreCase( "false" ) | |||
|| f.equalsIgnoreCase( "no" ) ) | |||
{ | |||
fork = "false"; | |||
forkedExecutable = null; | |||
} | |||
else | |||
{ | |||
fork = "true"; | |||
forkedExecutable = f; | |||
m_forkedExecutable = getSystemJavac(); | |||
} | |||
} | |||
@@ -249,7 +211,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setIncludeantruntime( boolean include ) | |||
{ | |||
includeAntRuntime = include; | |||
m_includeAntRuntime = include; | |||
} | |||
/** | |||
@@ -260,7 +222,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setIncludejavaruntime( boolean include ) | |||
{ | |||
includeJavaRuntime = include; | |||
m_includeJavaRuntime = include; | |||
} | |||
/** | |||
@@ -270,7 +232,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setMemoryInitialSize( String memoryInitialSize ) | |||
{ | |||
this.memoryInitialSize = memoryInitialSize; | |||
m_memoryInitialSize = memoryInitialSize; | |||
} | |||
/** | |||
@@ -280,7 +242,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setMemoryMaximumSize( String memoryMaximumSize ) | |||
{ | |||
this.memoryMaximumSize = memoryMaximumSize; | |||
m_memoryMaximumSize = memoryMaximumSize; | |||
} | |||
/** | |||
@@ -290,7 +252,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setNowarn( boolean flag ) | |||
{ | |||
this.nowarn = flag; | |||
m_nowarn = flag; | |||
} | |||
/** | |||
@@ -300,17 +262,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setOptimize( boolean optimize ) | |||
{ | |||
this.optimize = optimize; | |||
} | |||
/** | |||
* Proceed if compilation fails | |||
* | |||
* @param proceed The new Proceed value | |||
*/ | |||
public void setProceed( boolean proceed ) | |||
{ | |||
failOnError = !proceed; | |||
m_optimize = optimize; | |||
} | |||
/** | |||
@@ -320,7 +272,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setSource( String v ) | |||
{ | |||
this.source = v; | |||
m_source = v; | |||
} | |||
/** | |||
@@ -331,13 +283,13 @@ public class Javac extends MatchingTask | |||
public void addSrcdir( Path srcDir ) | |||
throws TaskException | |||
{ | |||
if( src == null ) | |||
if( m_src == null ) | |||
{ | |||
src = srcDir; | |||
m_src = srcDir; | |||
} | |||
else | |||
{ | |||
src.addPath( srcDir ); | |||
m_src.addPath( srcDir ); | |||
} | |||
} | |||
@@ -349,7 +301,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setTarget( String target ) | |||
{ | |||
this.target = target; | |||
m_target = target; | |||
} | |||
/** | |||
@@ -359,7 +311,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public void setVerbose( boolean verbose ) | |||
{ | |||
this.verbose = verbose; | |||
m_verbose = verbose; | |||
} | |||
/** | |||
@@ -369,7 +321,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public Path getBootclasspath() | |||
{ | |||
return bootclasspath; | |||
return m_bootclasspath; | |||
} | |||
/** | |||
@@ -379,7 +331,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public Path getClasspath() | |||
{ | |||
return compileClasspath; | |||
return m_compileClasspath; | |||
} | |||
protected File getBaseDir() | |||
@@ -395,7 +347,7 @@ public class Javac extends MatchingTask | |||
public String[] getCurrentCompilerArgs() | |||
{ | |||
ArrayList args = new ArrayList(); | |||
for( Iterator enum = implementationSpecificArgs.iterator(); | |||
for( Iterator enum = m_implementationSpecificArgs.iterator(); | |||
enum.hasNext(); | |||
) | |||
{ | |||
@@ -417,7 +369,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean getDebug() | |||
{ | |||
return debug; | |||
return m_debug; | |||
} | |||
/** | |||
@@ -427,7 +379,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public String getDebugLevel() | |||
{ | |||
return debugLevel; | |||
return m_debugLevel; | |||
} | |||
/** | |||
@@ -437,7 +389,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean getDepend() | |||
{ | |||
return depend; | |||
return m_depend; | |||
} | |||
/** | |||
@@ -447,7 +399,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean getDeprecation() | |||
{ | |||
return deprecation; | |||
return m_deprecation; | |||
} | |||
/** | |||
@@ -458,7 +410,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public File getDestdir() | |||
{ | |||
return destDir; | |||
return m_destDir; | |||
} | |||
/** | |||
@@ -468,7 +420,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public String getEncoding() | |||
{ | |||
return encoding; | |||
return m_encoding; | |||
} | |||
/** | |||
@@ -478,17 +430,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public Path getExtdirs() | |||
{ | |||
return extdirs; | |||
} | |||
/** | |||
* Gets the failonerror flag. | |||
* | |||
* @return The Failonerror value | |||
*/ | |||
public boolean getFailonerror() | |||
{ | |||
return failOnError; | |||
return m_extdirs; | |||
} | |||
/** | |||
@@ -498,7 +440,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public File[] getFileList() | |||
{ | |||
return compileList; | |||
return m_compileList; | |||
} | |||
/** | |||
@@ -509,7 +451,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean getIncludeantruntime() | |||
{ | |||
return includeAntRuntime; | |||
return m_includeAntRuntime; | |||
} | |||
/** | |||
@@ -520,7 +462,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean getIncludejavaruntime() | |||
{ | |||
return includeJavaRuntime; | |||
return m_includeJavaRuntime; | |||
} | |||
/** | |||
@@ -530,15 +472,15 @@ public class Javac extends MatchingTask | |||
*/ | |||
public String getJavacExecutable() | |||
{ | |||
if( forkedExecutable == null && isForkedJavac() ) | |||
if( m_forkedExecutable == null && isForkedJavac() ) | |||
{ | |||
forkedExecutable = getSystemJavac(); | |||
m_forkedExecutable = getSystemJavac(); | |||
} | |||
else if( forkedExecutable != null && !isForkedJavac() ) | |||
else if( m_forkedExecutable != null && !isForkedJavac() ) | |||
{ | |||
forkedExecutable = null; | |||
m_forkedExecutable = null; | |||
} | |||
return forkedExecutable; | |||
return m_forkedExecutable; | |||
} | |||
/** | |||
@@ -548,7 +490,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public String getMemoryInitialSize() | |||
{ | |||
return memoryInitialSize; | |||
return m_memoryInitialSize; | |||
} | |||
/** | |||
@@ -558,7 +500,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public String getMemoryMaximumSize() | |||
{ | |||
return memoryMaximumSize; | |||
return m_memoryMaximumSize; | |||
} | |||
/** | |||
@@ -568,7 +510,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean getNowarn() | |||
{ | |||
return nowarn; | |||
return m_nowarn; | |||
} | |||
/** | |||
@@ -576,9 +518,9 @@ public class Javac extends MatchingTask | |||
* | |||
* @return The Optimize value | |||
*/ | |||
public boolean getOptimize() | |||
public boolean isOptimize() | |||
{ | |||
return optimize; | |||
return m_optimize; | |||
} | |||
/** | |||
@@ -588,7 +530,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public String getSource() | |||
{ | |||
return source; | |||
return m_source; | |||
} | |||
/** | |||
@@ -598,7 +540,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public Path getSrcdir() | |||
{ | |||
return src; | |||
return m_src; | |||
} | |||
/** | |||
@@ -608,7 +550,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public String getTarget() | |||
{ | |||
return target; | |||
return m_target; | |||
} | |||
/** | |||
@@ -618,7 +560,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean getVerbose() | |||
{ | |||
return verbose; | |||
return m_verbose; | |||
} | |||
/** | |||
@@ -628,8 +570,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
public boolean isForkedJavac() | |||
{ | |||
return !"false".equals( fork ) || | |||
"extJavac".equals( getContext().getProperty( "build.compiler" ) ); | |||
return m_fork; | |||
} | |||
/** | |||
@@ -637,11 +578,11 @@ public class Javac extends MatchingTask | |||
* | |||
* @return Description of the Returned Value | |||
*/ | |||
public ImplementationSpecificArgument createCompilerArg() | |||
public org.apache.tools.ant.taskdefs.compilers.ImplementationSpecificArgument createCompilerArg() | |||
{ | |||
ImplementationSpecificArgument arg = | |||
new ImplementationSpecificArgument(); | |||
implementationSpecificArgs.add( arg ); | |||
org.apache.tools.ant.taskdefs.compilers.ImplementationSpecificArgument arg = | |||
new org.apache.tools.ant.taskdefs.compilers.ImplementationSpecificArgument( this ); | |||
m_implementationSpecificArgs.add( arg ); | |||
return arg; | |||
} | |||
@@ -655,19 +596,19 @@ public class Javac extends MatchingTask | |||
{ | |||
// first off, make sure that we've got a srcdir | |||
if( src == null ) | |||
if( m_src == null ) | |||
{ | |||
throw new TaskException( "srcdir attribute must be set!" ); | |||
} | |||
String[] list = src.list(); | |||
String[] list = m_src.list(); | |||
if( list.length == 0 ) | |||
{ | |||
throw new TaskException( "srcdir attribute must be set!" ); | |||
} | |||
if( destDir != null && !destDir.isDirectory() ) | |||
if( m_destDir != null && !m_destDir.isDirectory() ) | |||
{ | |||
throw new TaskException( "destination directory \"" + destDir + "\" does not exist or is not a directory" ); | |||
throw new TaskException( "destination directory \"" + m_destDir + "\" does not exist or is not a directory" ); | |||
} | |||
// scan source directories and dest directory to build up | |||
@@ -682,25 +623,25 @@ public class Javac extends MatchingTask | |||
throw new TaskException( "srcdir \"" + srcDir.getPath() + "\" does not exist!" ); | |||
} | |||
DirectoryScanner ds = this.getDirectoryScanner( srcDir ); | |||
DirectoryScanner ds = getDirectoryScanner( srcDir ); | |||
String[] files = ds.getIncludedFiles(); | |||
scanDir( srcDir, destDir != null ? destDir : srcDir, files ); | |||
scanDir( srcDir, m_destDir != null ? m_destDir : srcDir, files ); | |||
} | |||
// compile the source files | |||
String compiler = determineCompiler(); | |||
if( compileList.length > 0 ) | |||
if( m_compileList.length > 0 ) | |||
{ | |||
CompilerAdapter adapter = CompilerAdapterFactory.getCompiler( | |||
compiler, getLogger() ); | |||
final String message = "Compiling " + compileList.length + " source file" + | |||
( compileList.length == 1 ? "" : "s" ) + | |||
( destDir != null ? " to " + destDir : "" ); | |||
final String message = "Compiling " + m_compileList.length + " source file" + | |||
( m_compileList.length == 1 ? "" : "s" ) + | |||
( m_destDir != null ? " to " + m_destDir : "" ); | |||
getLogger().info( message ); | |||
// now we need to populate the compiler adapter | |||
@@ -709,14 +650,7 @@ public class Javac extends MatchingTask | |||
// finally, lets execute the compiler!! | |||
if( !adapter.execute() ) | |||
{ | |||
if( failOnError ) | |||
{ | |||
throw new TaskException( FAIL_MSG ); | |||
} | |||
else | |||
{ | |||
getLogger().error( FAIL_MSG ); | |||
} | |||
throw new TaskException( FAIL_MSG ); | |||
} | |||
} | |||
} | |||
@@ -731,8 +665,8 @@ public class Javac extends MatchingTask | |||
// on Windows java.home doesn't always refer to the correct location, | |||
// so we need to fall back to assuming java is somewhere on the | |||
// PATH. | |||
java.io.File jExecutable = | |||
new java.io.File( System.getProperty( "java.home" ) + | |||
File jExecutable = | |||
new File( System.getProperty( "java.home" ) + | |||
"/../bin/javac" + extension ); | |||
if( jExecutable.exists() && !Os.isFamily( Os.OS_FAMILY_NETWARE ) ) | |||
@@ -760,7 +694,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
protected void resetFileLists() | |||
{ | |||
compileList = new File[ 0 ]; | |||
m_compileList = new File[ 0 ]; | |||
} | |||
/** | |||
@@ -783,40 +717,36 @@ public class Javac extends MatchingTask | |||
if( newFiles.length > 0 ) | |||
{ | |||
File[] newCompileList = new File[ compileList.length + | |||
File[] newCompileList = new File[ m_compileList.length + | |||
newFiles.length ]; | |||
System.arraycopy( compileList, 0, newCompileList, 0, | |||
compileList.length ); | |||
System.arraycopy( m_compileList, 0, newCompileList, 0, | |||
m_compileList.length ); | |||
System.arraycopy( newFiles, 0, newCompileList, | |||
compileList.length, newFiles.length ); | |||
compileList = newCompileList; | |||
m_compileList.length, newFiles.length ); | |||
m_compileList = newCompileList; | |||
} | |||
} | |||
private String determineCompiler() | |||
protected String determineCompiler() | |||
{ | |||
Object compiler = getContext().getProperty( "build.compiler" ); | |||
if( !"false".equals( fork ) ) | |||
if( compiler != null ) | |||
{ | |||
if( compiler != null ) | |||
if( isJdkCompiler( compiler.toString() ) ) | |||
{ | |||
if( isJdkCompiler( compiler.toString() ) ) | |||
{ | |||
final String message = "Since fork is true, ignoring build.compiler setting."; | |||
getLogger().warn( message ); | |||
compiler = "extJavac"; | |||
} | |||
else | |||
{ | |||
getLogger().warn( "Since build.compiler setting isn't classic or modern, ignoring fork setting." ); | |||
} | |||
final String message = "Since fork is true, ignoring build.compiler setting."; | |||
getLogger().warn( message ); | |||
compiler = "extJavac"; | |||
} | |||
else | |||
{ | |||
compiler = "extJavac"; | |||
getLogger().warn( "Since build.compiler setting isn't classic or modern, ignoring fork setting." ); | |||
} | |||
} | |||
else | |||
{ | |||
compiler = "extJavac"; | |||
} | |||
if( compiler == null ) | |||
{ | |||
@@ -831,35 +761,4 @@ public class Javac extends MatchingTask | |||
} | |||
return compiler.toString(); | |||
} | |||
/** | |||
* Adds an "implementation" attribute to Commandline$Attribute used to | |||
* filter command line attributes based on the current implementation. | |||
* | |||
* @author RT | |||
*/ | |||
public class ImplementationSpecificArgument | |||
extends Argument | |||
{ | |||
private String impl; | |||
public void setImplementation( String impl ) | |||
{ | |||
this.impl = impl; | |||
} | |||
public String[] getParts() | |||
{ | |||
if( impl == null || impl.equals( determineCompiler() ) ) | |||
{ | |||
return super.getParts(); | |||
} | |||
else | |||
{ | |||
return new String[ 0 ]; | |||
} | |||
} | |||
} | |||
} |