96

我有以下问题。我想从命令行运行mvn文件Main.javaMain.java接受一个参数。我该如何从命令行执行此操作?

我试图找到一个例子,但我没有成功。有人可以给我一个例子来帮助我吗?

我看了这里,但不太明白我应该做什么。

另外,如何从不同于 Main.java 文件夹的文件夹执行该命令?

例如Main.java位于my/java/program/Main.java。我应该放什么

mvn exec:java -Dexec.mainClass="what to put here?" -Dexec.args="arg0 arg1 arg2"
4

3 回答 3

163

你可以运行:mvn exec:exec -Dexec.args="arg1".

这会将参数arg1传递给您的程序。

您应该指定完全限定的主类,例如,包测试中的 Main.java 需要

mvn exec:java  -Dexec.mainClass=test.Main

通过使用这里-f描述的参数,您还可以从其他目录运行它。

mvn exec:java -Dexec.mainClass=test.Main -f folder/pom.xm

对于多个参数,只需像在命令行中那样用空格分隔它们。

mvn exec:java -Dexec.mainClass=test.Main -Dexec.args="arg1 arg2 arg3"

对于以 分隔的参数space,您可以'argument separated with space' 在引号内使用分组。

mvn exec:java -Dexec.mainClass=test.Main -Dexec.args="'argument separated with space' 'another one'"
于 2012-04-11T15:10:30.517 回答
9

添加一个 shell 脚本,例如run.sh使它更容易:

#!/usr/bin/env bash
export JAVA_PROGRAM_ARGS=`echo "$@"`
mvn exec:java -Dexec.mainClass="test.Main" -Dexec.args="$JAVA_PROGRAM_ARGS"

然后你就可以执行:

./run.sh arg1 arg2 arg3
于 2019-06-02T07:25:17.053 回答
7

除了运行它mvn exec:java,你还可以运行它mvn exec:exec

mvn exec:exec -Dexec.executable="java" -Dexec.args="-classpath %classpath your.package.MainClass"
于 2016-01-12T14:13:45.450 回答