| /******************************************************************************* |
| * 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; |
| } |
| } |