You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2012/06/15 06:34:05 UTC
svn commit: r1350461 - in /ant/core/trunk: ./ src/main/org/apache/tools/ant/
src/main/org/apache/tools/ant/taskdefs/
src/main/org/apache/tools/ant/taskdefs/launcher/
Author: bodewig
Date: Fri Jun 15 04:34:04 2012
New Revision: 1350461
URL: http://svn.apache.org/viewvc?rev=1350461&view=rev
Log:
PR 52706: allow command launcher to be selected via a task. Submitted by Vimil Saju
Modified:
ant/core/trunk/CONTRIBUTORS
ant/core/trunk/contributors.xml
ant/core/trunk/src/main/org/apache/tools/ant/MagicNames.java
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/CommandLauncherTask.java
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/CommandLauncher.java
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/Java13CommandLauncher.java
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/PerlScriptCommandLauncher.java
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/ScriptCommandLauncher.java
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/VmsCommandLauncher.java
Modified: ant/core/trunk/CONTRIBUTORS
URL: http://svn.apache.org/viewvc/ant/core/trunk/CONTRIBUTORS?rev=1350461&r1=1350460&r2=1350461&view=diff
==============================================================================
--- ant/core/trunk/CONTRIBUTORS (original)
+++ ant/core/trunk/CONTRIBUTORS Fri Jun 15 04:34:04 2012
@@ -357,6 +357,7 @@ Trejkaz Xaoza
Ulrich Schmidt
Valentino Miazzo
Victor Toni
+Vimil Saju
Vincent Legoll
Volker Leidl
Waldek Herka
Modified: ant/core/trunk/contributors.xml
URL: http://svn.apache.org/viewvc/ant/core/trunk/contributors.xml?rev=1350461&r1=1350460&r2=1350461&view=diff
==============================================================================
--- ant/core/trunk/contributors.xml (original)
+++ ant/core/trunk/contributors.xml Fri Jun 15 04:34:04 2012
@@ -1441,6 +1441,10 @@
<last>Legoll</last>
</name>
<name>
+ <first>Vimil</first>
+ <last>Saju</last>
+ </name>
+ <name>
<first>Volker</first>
<last>Leidl</last>
</name>
Modified: ant/core/trunk/src/main/org/apache/tools/ant/MagicNames.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/MagicNames.java?rev=1350461&r1=1350460&r2=1350461&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/MagicNames.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/MagicNames.java Fri Jun 15 04:34:04 2012
@@ -248,5 +248,33 @@ public final class MagicNames {
*/
public static final String PROJECT_INVOKED_TARGETS
= "ant.project.invoked-targets";
+
+ /**
+ * Name of the project reference holding an instance of {@link
+ * org.apache.tools.ant.taskdefs.launcher.CommandLauncher} to use
+ * when executing commands with the help of an external skript.
+ *
+ * <p>Alternatively this is the name of a system property holding
+ * the fully qualified class name of a {@link
+ * org.apache.tools.ant.taskdefs.launcher.CommandLauncher}.</p>
+ *
+ * Value: {@value}
+ * @since Ant 1.9.0
+ */
+ public static final String ANT_SHELL_LAUNCHER_REF_ID = "ant.shellLauncher";
+
+ /**
+ * Name of the project reference holding an instance of {@link
+ * org.apache.tools.ant.taskdefs.launcher.CommandLauncher} to use
+ * when executing commands without the help of an external skript.
+ *
+ * <p>Alternatively this is the name of a system property holding
+ * the fully qualified class name of a {@link
+ * org.apache.tools.ant.taskdefs.launcher.CommandLauncher}.</p>
+ *
+ * Value: {@value}
+ * @since Ant 1.9.0
+ */
+ public static final String ANT_VM_LAUNCHER_REF_ID = "ant.vmLauncher";
}
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/CommandLauncherTask.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/CommandLauncherTask.java?rev=1350461&r1=1350460&r2=1350461&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/CommandLauncherTask.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/CommandLauncherTask.java Fri Jun 15 04:34:04 2012
@@ -4,6 +4,12 @@ import org.apache.tools.ant.BuildExcepti
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.launcher.CommandLauncher;
+/**
+ * Task that configures the {@link
+ * org.apache.tools.ant.taskdefs.launcher.CommandLauncher} to used
+ * when starting external processes.
+ * @since Ant 1.9.0
+ */
public class CommandLauncherTask extends Task {
private boolean vmLauncher;
private CommandLauncher commandLauncher;
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/CommandLauncher.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/CommandLauncher.java?rev=1350461&r1=1350460&r2=1350461&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/CommandLauncher.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/CommandLauncher.java Fri Jun 15 04:34:04 2012
@@ -3,6 +3,9 @@ package org.apache.tools.ant.taskdefs.la
import java.io.File;
import java.io.IOException;
+import static org.apache.tools.ant.MagicNames.ANT_SHELL_LAUNCHER_REF_ID;
+import static org.apache.tools.ant.MagicNames.ANT_VM_LAUNCHER_REF_ID;
+
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.condition.Os;
import org.apache.tools.ant.types.Commandline;
@@ -14,8 +17,6 @@ import org.apache.tools.ant.util.FileUti
* in the current working directory.
*/
public class CommandLauncher {
- private static final String ANT_SHELL_LAUNCHER_REF_ID = "ant.shellLauncher";
- private static final String ANT_VM_LAUNCHER_REF_ID = "ant.vmLauncher";
protected static final FileUtils FILE_UTILS = FileUtils.getFileUtils();
@@ -23,13 +24,8 @@ public class CommandLauncher {
private static CommandLauncher shellLauncher = null;
static {
- // Try using a JDK 1.3 launcher
- try {
- if(!Os.isFamily("os/2")) {
- vmLauncher = new Java13CommandLauncher();
- }
- } catch(NoSuchMethodException exc) {
- // Ignore and keep trying
+ if(!Os.isFamily("os/2")) {
+ vmLauncher = new Java13CommandLauncher();
}
if (Os.isFamily("mac") && !Os.isFamily("unix")) {
@@ -46,23 +42,22 @@ public class CommandLauncher {
shellLauncher = new WinNTCommandLauncher(baseLauncher);
} else {
// Windows 98/95 - need to use an auxiliary script
- shellLauncher = new ScriptCommandLauncher("bin/antRun.bat", baseLauncher);
+ shellLauncher =
+ new ScriptCommandLauncher("bin/antRun.bat", baseLauncher);
}
} else if (Os.isFamily("netware")) {
CommandLauncher baseLauncher = new CommandLauncher();
- shellLauncher = new PerlScriptCommandLauncher("bin/antRun.pl", baseLauncher);
+ shellLauncher =
+ new PerlScriptCommandLauncher("bin/antRun.pl", baseLauncher);
} else if (Os.isFamily("openvms")) {
// OpenVMS
- try {
- shellLauncher = new VmsCommandLauncher();
- } catch(NoSuchMethodException exc) {
- // Ignore and keep trying
- }
+ shellLauncher = new VmsCommandLauncher();
} else {
// Generic
- shellLauncher = new ScriptCommandLauncher("bin/antRun", new CommandLauncher());
+ shellLauncher = new ScriptCommandLauncher("bin/antRun",
+ new CommandLauncher());
}
}
@@ -80,9 +75,11 @@ public class CommandLauncher {
* @throws IOException
* if attempting to run a command in a specific directory.
*/
- public Process exec(Project project, String[] cmd, String[] env) throws IOException {
+ public Process exec(Project project, String[] cmd, String[] env)
+ throws IOException {
if(project != null) {
- project.log("Execute:CommandLauncher: " + Commandline.describeCommand(cmd), Project.MSG_DEBUG);
+ project.log("Execute:CommandLauncher: "
+ + Commandline.describeCommand(cmd), Project.MSG_DEBUG);
}
return Runtime.getRuntime().exec(cmd, env);
}
@@ -105,23 +102,22 @@ public class CommandLauncher {
* @throws IOException
* if trying to change directory.
*/
- public Process exec(Project project, String[] cmd, String[] env, File workingDir) throws IOException {
- if(workingDir == null) {
+ public Process exec(Project project, String[] cmd, String[] env,
+ File workingDir) throws IOException {
+ if (workingDir == null) {
return exec(project, cmd, env);
}
throw new IOException("Cannot execute a process in different "
- + "directory under this JVM");
+ + "directory under this JVM");
}
+ /**
+ * Obtains the shell launcher configured for the given project or
+ * the default shell launcher.
+ */
public static CommandLauncher getShellLauncher(Project project) {
- CommandLauncher launcher = null;
- if(project != null) {
- launcher = (CommandLauncher) project
- .getReference(ANT_SHELL_LAUNCHER_REF_ID);
- }
- if (launcher == null) {
- launcher = getSystemLauncher(ANT_SHELL_LAUNCHER_REF_ID);
- }
+ CommandLauncher launcher = extractLauncher(ANT_SHELL_LAUNCHER_REF_ID,
+ project);
if (launcher == null) {
launcher = shellLauncher;
}
@@ -129,17 +125,28 @@ public class CommandLauncher {
return launcher;
}
+ /**
+ * Obtains the VM launcher configured for the given project or
+ * the default VM launcher.
+ */
public static CommandLauncher getVMLauncher(Project project) {
+ CommandLauncher launcher = extractLauncher(ANT_VM_LAUNCHER_REF_ID,
+ project);
+ if (launcher == null) {
+ launcher = vmLauncher;
+ }
+ return launcher;
+ }
+
+ private static CommandLauncher extractLauncher(String referenceName,
+ Project project) {
CommandLauncher launcher = null;
if (project != null) {
- launcher = (CommandLauncher)project.getReference(ANT_VM_LAUNCHER_REF_ID);
+ launcher = (CommandLauncher) project.getReference(referenceName);
}
if (launcher == null) {
- launcher = getSystemLauncher(ANT_VM_LAUNCHER_REF_ID);
- }
- if (launcher == null) {
- launcher = vmLauncher;
+ launcher = getSystemLauncher(referenceName);
}
return launcher;
}
@@ -169,13 +176,21 @@ public class CommandLauncher {
return launcher;
}
- public static void setVMLauncher(Project project, CommandLauncher launcher) {
+ /**
+ * Sets the VM launcher to use for the given project.
+ */
+ public static void setVMLauncher(Project project,
+ CommandLauncher launcher) {
if (project != null) {
project.addReference(ANT_VM_LAUNCHER_REF_ID, launcher);
}
}
- public static void setShellLauncher(Project project, CommandLauncher launcher) {
+ /**
+ * Sets the shell launcher to use for the given project.
+ */
+ public static void setShellLauncher(Project project,
+ CommandLauncher launcher) {
if (project != null) {
project.addReference(ANT_SHELL_LAUNCHER_REF_ID, launcher);
}
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/Java13CommandLauncher.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/Java13CommandLauncher.java?rev=1350461&r1=1350460&r2=1350461&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/Java13CommandLauncher.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/Java13CommandLauncher.java Fri Jun 15 04:34:04 2012
@@ -13,10 +13,6 @@ import org.apache.tools.ant.types.Comman
*/
public class Java13CommandLauncher extends CommandLauncher {
- public Java13CommandLauncher() throws NoSuchMethodException {
- // Used to verify if Java13 is available, is prerequisite in ant 1.8
- }
-
/**
* Launches the given command in a new process, in the given
* working directory.
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/PerlScriptCommandLauncher.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/PerlScriptCommandLauncher.java?rev=1350461&r1=1350460&r2=1350461&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/PerlScriptCommandLauncher.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/PerlScriptCommandLauncher.java Fri Jun 15 04:34:04 2012
@@ -38,7 +38,7 @@ public class PerlScriptCommandLauncher e
public Process exec(Project project, String[] cmd, String[] env,
File workingDir) throws IOException {
if (project == null) {
- if(workingDir == null) {
+ if (workingDir == null) {
return exec(project, cmd, env);
}
throw new IOException("Cannot locate antRun script: "
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/ScriptCommandLauncher.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/ScriptCommandLauncher.java?rev=1350461&r1=1350460&r2=1350461&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/ScriptCommandLauncher.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/ScriptCommandLauncher.java Fri Jun 15 04:34:04 2012
@@ -46,7 +46,7 @@ public class ScriptCommandLauncher exten
}
// Locate the auxiliary script
String antHome = project.getProperty(MagicNames.ANT_HOME);
- if(antHome == null) {
+ if (antHome == null) {
throw new IOException("Cannot locate antRun script: "
+ "Property '" + MagicNames.ANT_HOME
+ "' not found");
@@ -57,7 +57,7 @@ public class ScriptCommandLauncher exten
// Build the command
File commandDir = workingDir;
- if(workingDir == null) {
+ if (workingDir == null) {
commandDir = project.getBaseDir();
}
String[] newcmd = new String[cmd.length + 2];
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/VmsCommandLauncher.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/VmsCommandLauncher.java?rev=1350461&r1=1350460&r2=1350461&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/VmsCommandLauncher.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/launcher/VmsCommandLauncher.java Fri Jun 15 04:34:04 2012
@@ -15,7 +15,7 @@ import org.apache.tools.ant.util.FileUti
*/
public class VmsCommandLauncher extends Java13CommandLauncher {
- public VmsCommandLauncher() throws NoSuchMethodException {
+ public VmsCommandLauncher() {
super();
}