blob: e64587b37fb9405c71db3c384868b60fd1aa488c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2013 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM - Initial API and implementation
*******************************************************************************/
package org.eclipse.pde.internal.build.ant;
import org.eclipse.pde.internal.build.IXMLConstants;
import org.eclipse.pde.internal.build.Utils;
/**
* Wrapper class for the Ant javac task.
*/
public class JavacTask implements ITask {
protected String classpathId;
protected String bootclasspath;
protected String destdir;
protected String failonerror;
protected String[] srcdir;
protected String verbose;
protected String includeAntRuntime;
protected String fork;
protected String debug;
protected String source;
protected String target;
protected String compileArgs;
protected String specificCompileArgs;
protected String compileArgsFile;
protected String encoding;
protected String logExtension;
protected String errorProperty;
protected String[] excludes;
protected String compilerAdapter;
protected String warningProperties;
private boolean adapterUseLog = false;
private boolean adapterUseArgFile = false;
/**
* Default constructor for the class.
*/
public JavacTask() {
super();
}
/**
* @see ITask#print(AntScript)
*/
@Override
public void print(AntScript script) {
script.printTab();
script.print("<javac"); //$NON-NLS-1$
script.printAttribute("destdir", destdir, false); //$NON-NLS-1$
script.printAttribute("failonerror", failonerror, false); //$NON-NLS-1$
script.printAttribute("verbose", verbose, false); //$NON-NLS-1$
script.printAttribute("fork", fork, false); //$NON-NLS-1$
script.printAttribute("debug", debug, false); //$NON-NLS-1$
script.printAttribute("includeAntRuntime", includeAntRuntime, false); //$NON-NLS-1$
script.printAttribute("bootclasspath", bootclasspath, false); //$NON-NLS-1$
script.printAttribute("source", source, false); //$NON-NLS-1$
script.printAttribute("target", target, false); //$NON-NLS-1$
script.printAttribute("encoding", encoding, false); //$NON-NLS-1$
script.printAttribute("errorProperty", errorProperty, false); //$NON-NLS-1$
script.printAttribute("compiler", compilerAdapter, false); //$NON-NLS-1$
script.println(">"); //$NON-NLS-1$
script.indent++;
if (compileArgs != null) {
script.println("<compilerarg line=\"" + compileArgs + "\" compiler=\"" + Utils.getPropertyFormat(IXMLConstants.PROPERTY_BUILD_COMPILER) + "\"/>"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
}
if (specificCompileArgs != null) {
script.printTabs();
script.print("<compilerarg"); //$NON-NLS-1$
script.printAttribute("line", specificCompileArgs, true); //$NON-NLS-1$
script.printAttribute("compiler", compilerAdapter, false); //$NON-NLS-1$
script.println("/>"); //$NON-NLS-1$
}
script.println("<classpath refid=\"" + classpathId + "\" />"); //$NON-NLS-1$ //$NON-NLS-2$
for (int i = 0; i < srcdir.length; i++) {
script.printTab();
script.print("<src path="); //$NON-NLS-1$
script.printQuotes(srcdir[i]);
script.println("/>"); //$NON-NLS-1$
}
for (int i = 0; excludes != null && i < excludes.length; i++) {
script.printTab();
script.print("<exclude "); //$NON-NLS-1$
script.printAttribute("name", excludes[i], true); //$NON-NLS-1$
script.println("/>"); //$NON-NLS-1$
}
if (warningProperties != null) {
script.printTab();
script.print("<compilerarg"); //$NON-NLS-1$
script.printAttribute("line", "-properties '" + warningProperties + "'", true); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
if (compilerAdapter != null && adapterUseArgFile)
script.printAttribute("compiler", compilerAdapter, true); //$NON-NLS-1$
else
script.printAttribute("compiler", IXMLConstants.JDT_COMPILER_ADAPTER, true); //$NON-NLS-1$
script.println("/>"); //$NON-NLS-1$
}
if (compileArgsFile != null) {
script.printTabs();
script.print("<compilerarg"); //$NON-NLS-1$
script.printAttribute("value", "@" + compileArgsFile, true); //$NON-NLS-1$ //$NON-NLS-2$
if (compilerAdapter != null && adapterUseArgFile)
script.printAttribute("compiler", compilerAdapter, true); //$NON-NLS-1$
else
script.printAttribute("compiler", IXMLConstants.JDT_COMPILER_ADAPTER, true); //$NON-NLS-1$
script.println("/>"); //$NON-NLS-1$
}
if (destdir != null) {
script.printTabs();
script.print("<compilerarg"); //$NON-NLS-1$
script.printAttribute("line", "-log '" + destdir + logExtension + "'", true); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
if (compilerAdapter != null && adapterUseLog)
script.printAttribute("compiler", compilerAdapter, true); //$NON-NLS-1$
else
script.printAttribute("compiler", IXMLConstants.JDT_COMPILER_ADAPTER, true); //$NON-NLS-1$
script.println("/>"); //$NON-NLS-1$
}
script.indent--;
script.printEndTag("javac"); //$NON-NLS-1$
}
/**
* Set the javac task classpath refid to be the given value.
* @param classpathId
*/
public void setClasspathId(String classpathId) {
this.classpathId = classpathId;
}
/**
* Set the javac task boot classpath to be the given value.
*
* @param bootclasspath the boot classpath attribute
*/
public void setBootClasspath(String bootclasspath) {
this.bootclasspath = bootclasspath;
}
/**
* Set the javac task destination directory to be the given value.
*
* @param destdir the destination directory
*/
public void setDestdir(String destdir) {
this.destdir = destdir;
}
/**
* Set the javac task failOnError attribute to be the given value. Valid values
* are <code>"true"</code> and <code>"false"</code>.
*
* @param failonerror either <code>"true"</code> or <code>"false"</code>
*/
public void setFailOnError(String failonerror) {
this.failonerror = failonerror;
}
/**
* Set the javac task includeAntRuntime attribute to be the given value. Valid
* values are <code>"no"</code> and <code>"yes"</code>.
*
* @param include either <code>"no"</code> or <code>"yes"</code>
*/
public void setIncludeAntRuntime(String include) {
this.includeAntRuntime = include;
}
/**
* Set the javac task source directory attribute to be the given value.
*
* @param srcdir the source directory
*/
public void setSrcdir(String[] srcdir) {
this.srcdir = srcdir;
}
/**
* Set patterns to exclude from compilation
* @param excludes
*/
public void setExcludes(String[] excludes) {
this.excludes = excludes;
}
/**
* Set the javac task verbose attribute to be the given value. Valid values
* are <code>"true"</code> and <code>"false"</code>.
*
* @param verbose either <code>"true"</code> or <code>"false"</code>
*/
public void setVerbose(String verbose) {
this.verbose = verbose;
}
/**
* Set the javac task fork attribute to be the given value. Valid values
* are <code>"true"</code> and <code>"false"</code>.
*
* @param fork either <code>"true"</code> or <code>"false"</code>
*/
public void setFork(String fork) {
this.fork = fork;
}
/**
* Set the javac task debug attribute to be the given value. Valid values
* are <code>"on"</code> and <code>"off"</code>.
*
* @param debug either <code>"on"</code> or <code>"off"</code>
*/
public void setDebug(String debug) {
this.debug = debug;
}
/**
* Set the javac task source attribute to be the given value.
*
* @param source either <code>"1.3"</code> or <code>"1.4"</code>
*/
public void setSource(String source) {
this.source = source;
}
/**
* Set the javac task target attribute to be the given value.
*
* @param target either <code>"1.3"</code> or <code>"1.4"</code>
*/
public void setTarget(String target) {
this.target = target;
}
public void setCompileArgs(String args) {
this.compileArgs = args;
}
public void setSpecificCompileArgs(String args) {
this.specificCompileArgs = args;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
public void setLogExtension(String extension) {
this.logExtension = extension;
}
public void setCompileArgsFile(String file) {
this.compileArgsFile = file;
}
public void setErrorProperty(String errorProperty) {
this.errorProperty = errorProperty;
}
public void setCompilerAdapter(String compilerAdapter) {
this.compilerAdapter = compilerAdapter;
}
public void setAdapterUseLog(boolean useLog) {
this.adapterUseLog = useLog;
}
public void setAdapterArgFile(boolean useFile) {
this.adapterUseArgFile = useFile;
}
public void setWarningProperties(String warningProperties) {
this.warningProperties = warningProperties;
}
}