I have a Java project that builds with Maven but has a build.xml with its only task to run maven to copy files. I can't change this project's design but have to get it running in my Intellij IDE. I'm using the bundled Maven and Ant versions. Maven runs fine and compiles the jars, the ant job does not.
<project name="projectAppUploader" default="devbuild">
<target name="devbuild">
<exec executable="mvn">
<arg value="package"/>
</exec>
<copy file="module-gui/target/appUploader-GUI.jar" todir="/foo/bar/GUI/"/>
<copy file="module-main/target/appUploader.jar" todir="/foo/bar/app"/>
</target>
When I run this as an Ant target I get an error:
/home/alex/dev/projectAppUploader/build.xml:3: Execute failed: java.io.IOException: Cannot run program "mvn" (in directory "/home/alex/dev/projectAppUploader/"): error=2, No such file or directory
at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:673)
at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:497)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
at org.apache.tools.ant.Task.perform(Task.java:350)
at org.apache.tools.ant.Target.execute(Target.java:449)
at org.apache.tools.ant.Target.performTasks(Target.java:470)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1388)
at org.apache.tools.ant.Project.executeTarget(Project.java:1361)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.Main.runBuild(Main.java:834)
at org.apache.tools.ant.Main.startAnt(Main.java:223)
at org.apache.tools.ant.Main.start(Main.java:190)
at org.apache.tools.ant.Main.main(Main.java:274)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.intellij.rt.ant.execution.AntMain2.main(AntMain2.java:31)
Caused by: java.io.IOException: Cannot run program "mvn" (in directory "/home/alex/dev/projectAppUploader/"): error=2, No such file or directory
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
at java.base/java.lang.Runtime.exec(Runtime.java:592)
at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58)
at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:424)
at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:438)
at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:630)
at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:669)
... 23 more
Caused by: java.io.IOException: error=2, No such file or directory
at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:340)
at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:271)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
... 30 more
Ant build completed with 3 errors and no warnings in 0s at 16.04.21, 21:42
Credit goes to dariosiciliy. Ant does not know the path to the executable of the intellij's mvn program. if I add it (or if I install maven on the system and put it into the path variable), it works.