我有一个用Maven构建的Java项目,但是有一个build.xml,它唯一的任务是运行maven来复制文件。我不能改变这个项目的设计,但必须让它在我的Intellij IDE中运行。我使用的是捆绑的Maven和Ant版本。Maven可以很好地运行并编译jars,而ant作业则不能。
<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>当我将其作为Ant目标运行时,我得到一个错误:
/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发布于 2021-04-18 16:46:49
功劳归功于dariosiciliy。Ant不知道intellij的mvn程序的可执行文件的路径。如果我添加它(或者如果我在系统上安装maven并将其放入path变量),它就可以工作。
https://stackoverflow.com/questions/67131459
复制相似问题