{"id":88,"date":"2025-02-01T22:36:52","date_gmt":"2025-02-01T22:36:52","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2008\/11\/25\/running-native-programs-in-ant\/"},"modified":"2025-02-01T22:36:52","modified_gmt":"2025-02-01T22:36:52","slug":"running-native-programs-in-ant","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/running-native-programs-in-ant\/","title":{"rendered":"How to Run Executable &amp; Native Programs in an Ant Script"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\"><strong>How to Run Executable &amp; Native Programs in an Ant Script<\/strong><\/h1>\n\n\n\n<p><strong>Apache Ant<\/strong> allows you to run <strong>executable files (<code>.exe<\/code>) and native programs<\/strong> using the <code>&lt;exec&gt;<\/code> task. This guide explains how to:<br>\u2705 Execute an external program or script<br>\u2705 Pass arguments to the program<br>\u2705 Handle output and errors<br>\u2705 Run Windows executables (<code>.exe<\/code>) and Unix shell scripts (<code>.sh<\/code>)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. Running an Executable (<code>.exe<\/code>) in Ant Script<\/strong><\/h2>\n\n\n\n<p>If you have a <strong>Windows executable<\/strong> (e.g., <code>myprogram.exe<\/code>) and want to run it using Ant, use the <code>&lt;exec&gt;<\/code> task.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Example: Run an EXE File<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">project<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"RunExeExample\"<\/span> <span class=\"hljs-attr\">default<\/span>=<span class=\"hljs-string\">\"runExe\"<\/span> <span class=\"hljs-attr\">basedir<\/span>=<span class=\"hljs-string\">\".\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">target<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"runExe\"<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">exec<\/span> <span class=\"hljs-attr\">executable<\/span>=<span class=\"hljs-string\">\"C:\\path\\to\\myprogram.exe\"<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">arg<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"--option1\"<\/span>\/&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">arg<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"value1\"<\/span>\/&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">exec<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">target<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">project<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u2705 This will run:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">C<\/span>:\\<span class=\"hljs-selector-tag\">path<\/span>\\<span class=\"hljs-selector-tag\">to<\/span>\\<span class=\"hljs-selector-tag\">myprogram<\/span><span class=\"hljs-selector-class\">.exe<\/span> <span class=\"hljs-selector-tag\">--option1<\/span> <span class=\"hljs-selector-tag\">value1<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Key Points:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Replace <code>C:\\path\\to\\myprogram.exe<\/code> with the actual path of your executable.<\/li>\n\n\n\n<li>Use <code>&lt;arg><\/code> to <strong>pass arguments<\/strong> to the executable.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. Running a Native Program (Any OS)<\/strong><\/h2>\n\n\n\n<p>You can run system commands (e.g., <code>cmd.exe<\/code> for Windows or <code>sh<\/code> for Unix).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Example: Running a Shell Script (<code>.sh<\/code>)<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">target<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"runShell\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">exec<\/span> <span class=\"hljs-attr\">executable<\/span>=<span class=\"hljs-string\">\"sh\"<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">arg<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"-c\"<\/span>\/&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">arg<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"ls -la\"<\/span>\/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">exec<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">target<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u2705 This runs the command:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">sh -c <span class=\"hljs-string\">\"ls -la\"<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Example: Running a Windows Command (<code>cmd.exe<\/code>)<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">target<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"runCmd\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">exec<\/span> <span class=\"hljs-attr\">executable<\/span>=<span class=\"hljs-string\">\"cmd.exe\"<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">arg<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"\/c\"<\/span>\/&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">arg<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"dir\"<\/span>\/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">exec<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">target<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u2705 This runs:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">cmd.exe \/c <span class=\"hljs-string\">\"dir\"<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><em>(Lists directory contents on Windows.)<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. Capturing Output and Logging<\/strong><\/h2>\n\n\n\n<p>You can capture output from the executable <strong>into a file<\/strong> or <strong>display it in the Ant log<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Example: Redirect Output to a Log File<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">target<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"runExeWithLog\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">exec<\/span> <span class=\"hljs-attr\">executable<\/span>=<span class=\"hljs-string\">\"C:\\path\\to\\myprogram.exe\"<\/span> <span class=\"hljs-attr\">output<\/span>=<span class=\"hljs-string\">\"output.log\"<\/span> <span class=\"hljs-attr\">error<\/span>=<span class=\"hljs-string\">\"error.log\"<\/span>\/&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">target<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u2705 This saves standard output to <code>output.log<\/code> and errors to <code>error.log<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. Setting Environment Variables<\/strong><\/h2>\n\n\n\n<p>You may need to <strong>set environment variables<\/strong> before running an executable.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Example: Setting an Environment Variable<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">target<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"runWithEnv\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">exec<\/span> <span class=\"hljs-attr\">executable<\/span>=<span class=\"hljs-string\">\"myprogram.exe\"<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">env<\/span> <span class=\"hljs-attr\">key<\/span>=<span class=\"hljs-string\">\"MY_ENV_VAR\"<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"some_value\"<\/span>\/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">exec<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">target<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u2705 This sets <code>MY_ENV_VAR=some_value<\/code> before running <code>myprogram.exe<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. Running Background Processes<\/strong><\/h2>\n\n\n\n<p>To run a program <strong>without waiting for it to finish<\/strong>, set <code>spawn=\"true\"<\/code>.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">target<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"runInBackground\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">exec<\/span> <span class=\"hljs-attr\">executable<\/span>=<span class=\"hljs-string\">\"C:\\path\\to\\myprogram.exe\"<\/span> <span class=\"hljs-attr\">spawn<\/span>=<span class=\"hljs-string\">\"true\"<\/span>\/&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">target<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u2705 This starts <code>myprogram.exe<\/code> and allows Ant to continue execution.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>6. Full Example: Running an EXE, Capturing Output, and Setting Env Variables<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">project<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"FullExample\"<\/span> <span class=\"hljs-attr\">default<\/span>=<span class=\"hljs-string\">\"runExe\"<\/span> <span class=\"hljs-attr\">basedir<\/span>=<span class=\"hljs-string\">\".\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">target<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"runExe\"<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">exec<\/span> <span class=\"hljs-attr\">executable<\/span>=<span class=\"hljs-string\">\"C:\\path\\to\\myprogram.exe\"<\/span> <span class=\"hljs-attr\">output<\/span>=<span class=\"hljs-string\">\"program_output.log\"<\/span> <span class=\"hljs-attr\">error<\/span>=<span class=\"hljs-string\">\"program_error.log\"<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">env<\/span> <span class=\"hljs-attr\">key<\/span>=<span class=\"hljs-string\">\"CONFIG_PATH\"<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"C:\\configs\"<\/span>\/&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">arg<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"--config\"<\/span>\/&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">arg<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"config.json\"<\/span>\/&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">exec<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">target<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">project<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u2705 This:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Runs <code>myprogram.exe --config config.json<\/code><\/li>\n\n\n\n<li>Captures output in <code>program_output.log<\/code> and errors in <code>program_error.log<\/code><\/li>\n\n\n\n<li>Sets the environment variable <code>CONFIG_PATH=C:\\configs<\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>7. Conclusion<\/strong><\/h2>\n\n\n\n<p>With Ant\u2019s <code>&lt;exec&gt;<\/code> task, you can <strong>execute native programs, EXE files, and shell scripts<\/strong>, pass arguments, capture output, and set environment variables. \ud83d\ude80<\/p>\n\n\n\n<p>Would you like help <strong>automating builds, integrating with Java, or scheduling tasks in Ant<\/strong>? Let me know! \ud83d\ude0a<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Apache Ant <code>&lt;exec&gt;<\/code> Task Parameters Table<\/strong><\/h1>\n\n\n\n<p>The <code>&lt;exec&gt;<\/code> task in <strong>Apache Ant<\/strong> is used to run external programs, executables, scripts, or system commands. The following table lists all the available parameters for the <code>&lt;exec&gt;<\/code> task along with their descriptions and example usage.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\ud83d\udccc Table: <code>&lt;exec&gt;<\/code> Task Parameters<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Parameter<\/th><th>Description<\/th><th>Required<\/th><th>Example Usage<\/th><\/tr><\/thead><tbody><tr><td><strong><code>executable<\/code><\/strong><\/td><td>The program or command to execute (full path if necessary)<\/td><td>\u2705 Yes<\/td><td><code>&lt;exec executable=\"cmd.exe\"\/&gt;<\/code><\/td><\/tr><tr><td><strong><code>dir<\/code><\/strong><\/td><td>Specifies the working directory for the command execution<\/td><td>\u274c No<\/td><td><code>&lt;exec executable=\"myprogram.exe\" dir=\"C:\\mydir\"\/&gt;<\/code><\/td><\/tr><tr><td><strong><code>os<\/code><\/strong><\/td><td>Restricts execution to specific OS (comma-separated)<\/td><td>\u274c No<\/td><td><code>&lt;exec executable=\"ls\" os=\"Linux,MacOS\"\/&gt;<\/code><\/td><\/tr><tr><td><strong><code>failonerror<\/code><\/strong><\/td><td>If <code>true<\/code>, the build fails on non-zero exit codes<\/td><td>\u274c No (default: <code>false<\/code>)<\/td><td><code>&lt;exec executable=\"myprogram.exe\" failonerror=\"true\"\/&gt;<\/code><\/td><\/tr><tr><td><strong><code>spawn<\/code><\/strong><\/td><td>If <code>true<\/code>, runs the process in the background<\/td><td>\u274c No (default: <code>false<\/code>)<\/td><td><code>&lt;exec executable=\"notepad.exe\" spawn=\"true\"\/&gt;<\/code><\/td><\/tr><tr><td><strong><code>output<\/code><\/strong><\/td><td>Captures the program\u2019s standard output to a file<\/td><td>\u274c No<\/td><td><code>&lt;exec executable=\"myprogram.exe\" output=\"output.log\"\/&gt;<\/code><\/td><\/tr><tr><td><strong><code>error<\/code><\/strong><\/td><td>Captures the program\u2019s error output to a file<\/td><td>\u274c No<\/td><td><code>&lt;exec executable=\"myprogram.exe\" error=\"error.log\"\/&gt;<\/code><\/td><\/tr><tr><td><strong><code>input<\/code><\/strong><\/td><td>Redirects a file as standard input for the process<\/td><td>\u274c No<\/td><td><code>&lt;exec executable=\"myprogram.exe\" input=\"input.txt\"\/&gt;<\/code><\/td><\/tr><tr><td><strong><code>logerror<\/code><\/strong><\/td><td>If <code>true<\/code>, logs error messages to the Ant console<\/td><td>\u274c No (default: <code>false<\/code>)<\/td><td><code>&lt;exec executable=\"myprogram.exe\" logerror=\"true\"\/&gt;<\/code><\/td><\/tr><tr><td><strong><code>resultproperty<\/code><\/strong><\/td><td>Stores the exit code of the command in a property<\/td><td>\u274c No<\/td><td><code>&lt;exec executable=\"myprogram.exe\" resultproperty=\"exit.code\"\/&gt;<\/code><\/td><\/tr><tr><td><strong><code>timeout<\/code><\/strong><\/td><td>Sets a timeout (in milliseconds) for execution<\/td><td>\u274c No<\/td><td><code>&lt;exec executable=\"myprogram.exe\" timeout=\"5000\"\/&gt;<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\ud83d\udccc Special Nested Elements in <code>&lt;exec&gt;<\/code><\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Element<\/th><th>Description<\/th><th>Example Usage<\/th><\/tr><\/thead><tbody><tr><td><strong><code>&lt;arg&gt;<\/code><\/strong><\/td><td>Passes command-line arguments<\/td><td><code>&lt;arg value=\"--config config.json\"\/&gt;<\/code><\/td><\/tr><tr><td><strong><code>&lt;env&gt;<\/code><\/strong><\/td><td>Sets environment variables for execution<\/td><td><code>&lt;env key=\"JAVA_HOME\" value=\"C:\\Java\"\/&gt;<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\ud83d\udccc Example: Full <code>&lt;exec&gt;<\/code> Task Usage<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">project<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"RunExecutable\"<\/span> <span class=\"hljs-attr\">default<\/span>=<span class=\"hljs-string\">\"execute\"<\/span> <span class=\"hljs-attr\">basedir<\/span>=<span class=\"hljs-string\">\".\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">target<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"execute\"<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">exec<\/span> <span class=\"hljs-attr\">executable<\/span>=<span class=\"hljs-string\">\"C:\\path\\to\\myprogram.exe\"<\/span> <span class=\"hljs-attr\">dir<\/span>=<span class=\"hljs-string\">\"C:\\mydir\"<\/span> <span class=\"hljs-attr\">failonerror<\/span>=<span class=\"hljs-string\">\"true\"<\/span> <span class=\"hljs-attr\">timeout<\/span>=<span class=\"hljs-string\">\"10000\"<\/span> <span class=\"hljs-attr\">output<\/span>=<span class=\"hljs-string\">\"output.log\"<\/span> <span class=\"hljs-attr\">error<\/span>=<span class=\"hljs-string\">\"error.log\"<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">arg<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"--config\"<\/span>\/&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">arg<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"config.json\"<\/span>\/&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">env<\/span> <span class=\"hljs-attr\">key<\/span>=<span class=\"hljs-string\">\"CONFIG_PATH\"<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"C:\\configs\"<\/span>\/&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">exec<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">target<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">project<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u2705 <strong>This script:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Runs <code>myprogram.exe --config config.json<\/code> in <code>C:\\mydir<\/code><\/li>\n\n\n\n<li>Stops execution if an error occurs (<code>failonerror=\"true\"<\/code>)<\/li>\n\n\n\n<li>Captures standard output (<code>output.log<\/code>) and errors (<code>error.log<\/code>)<\/li>\n\n\n\n<li>Uses an environment variable <code>CONFIG_PATH=C:\\configs<\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\ud83c\udfaf Conclusion<\/strong><\/h2>\n\n\n\n<p>The <strong><code>&lt;exec&gt;<\/code><\/strong> task in Ant is highly flexible and allows running external programs with environment control, error handling, and logging. By using parameters and nested elements effectively, you can <strong>automate complex tasks<\/strong> seamlessly. \ud83d\ude80<\/p>\n\n\n\n<p>Would you like additional help with <strong>Ant automation, Java builds, or integrating with Jenkins<\/strong>? Let me know! \ud83d\ude0a<\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to Run Executable &amp; Native Programs in an Ant Script Apache Ant allows you to run executable files (.exe) and native programs using the &lt;exec&gt; task. This guide explains how to:\u2705 Execute an external program or script\u2705 Pass arguments to the program\u2705 Handle output and errors\u2705 Run Windows executables (.exe) and Unix shell scripts&#8230;<\/p>\n","protected":false},"author":1,"featured_media":3608,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_joinchat":[],"footnotes":""},"categories":[12],"tags":[209,1897,1898,1896,1892,1894,1893,1668,1899,1895],"class_list":["post-88","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apache-ant","tag-ant","tag-ant-guide","tag-ant-native","tag-ant-tutorials","tag-native","tag-native-programs-in-ant","tag-programs","tag-run","tag-running-native-programs-in-ant","tag-running-programs"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/88","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=88"}],"version-history":[{"count":3,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/88\/revisions"}],"predecessor-version":[{"id":48326,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/88\/revisions\/48326"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/3608"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=88"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=88"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=88"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}