Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/AntFileRunner.java')
-rw-r--r--org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/AntFileRunner.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/AntFileRunner.java b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/AntFileRunner.java
new file mode 100644
index 000000000..c5910ad57
--- /dev/null
+++ b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/AntFileRunner.java
@@ -0,0 +1,79 @@
+package org.eclipse.ui.externaltools.internal.core;
+
+/**********************************************************************
+Copyright (c) 2002 IBM Corp. and others.
+All rights reserved.   This program and the accompanying materials
+are made available under the terms of the Common Public License v0.5
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/cpl-v05.html
+Contributors:
+**********************************************************************/
+import org.eclipse.ant.core.AntRunner;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+
+/**
+ * Responsible for running ant files.
+ */
+public class AntFileRunner extends ExternalToolsRunner {
+ private static final String ANT_LOGGER_CLASS = "org.eclipse.ui.externaltools.internal.ui.ant.AntBuildLogger"; //$NON-NLS-1$
+ private static final String NULL_LOGGER_CLASS = "org.eclipse.ui.externaltools.internal.ui.ant.NullBuildLogger"; //$NON-NLS-1$
+
+ private static final String INPUT_HANDLER_CLASS = "org.eclipse.ui.externaltools.internal.ui.ant.AntInputHandler"; //$NON-NLS-1$
+
+ private static final String BASE_DIR_PREFIX = "-Dbasedir="; //$NON-NLS-1$
+
+ /**
+ * Creates an empty ant file runner
+ */
+ public AntFileRunner() {
+ super();
+ }
+
+ /* (non-Javadoc)
+ * Method declared in ExternalToolsRunner.
+ */
+ public void execute(IProgressMonitor monitor, IRunnerContext runnerContext) throws CoreException, InterruptedException {
+ try {
+ String[] targets = runnerContext.getAntTargets();
+ AntRunner runner = new AntRunner();
+ String args = runnerContext.getExpandedArguments();
+ String baseDir = runnerContext.getExpandedWorkingDirectory();
+ if (baseDir.length() > 0) {
+ String baseDirArg;
+ if (ToolUtil.hasSpace(baseDir)) {
+ baseDirArg = BASE_DIR_PREFIX + "\"" + baseDir + "\""; //$NON-NLS-2$ //$NON-NLS-1$
+ } else {
+ baseDirArg = BASE_DIR_PREFIX + baseDir;
+ }
+ runner.setArguments(args + " " + baseDirArg ); //$NON-NLS-1$
+ } else {
+ runner.setArguments(args);
+ }
+ runner.setBuildFileLocation(runnerContext.getExpandedLocation());
+ if (targets.length > 0) {
+ runner.setExecutionTargets(targets);
+ }
+ if (runnerContext.getShowLog()) {
+ runner.addBuildLogger(ANT_LOGGER_CLASS);
+ } else {
+ runner.addBuildLogger(NULL_LOGGER_CLASS);
+ }
+
+ runner.setInputHandler(INPUT_HANDLER_CLASS);
+
+ runner.run(monitor);
+ } catch (CoreException e) {
+ Throwable carriedException = e.getStatus().getException();
+ if (carriedException instanceof OperationCanceledException) {
+ throw new InterruptedException(carriedException.getMessage());
+ } else {
+ throw e;
+ }
+ } finally {
+ monitor.done();
+ }
+ }
+}

Back to the top