Maven:如何从命令行传递参数运行.java文件

时间:2012-04-11 14:47:23

标签: java maven arguments

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

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

我看了here,但不太明白我该做什么。

另外,如何从Main.java文件夹以外的其他文件夹中执行该命令?

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

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

4 个答案:

答案 0 :(得分:129)

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

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

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

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

使用-f参数,如描述here,您也可以从其他目录运行它。

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

对于多个参数,只需将它们与命令行中的空格分开即可。

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

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

mvn exec:java -Dexec.mainClass=test.Main -Dexec.args="'argument separated with space' 'another one'"

答案 1 :(得分:5)

除了使用mvn exec:java运行它之外,您还可以使用mvn exec:exec

运行它
mvn exec:exec -Dexec.executable="java" -Dexec.args="-classpath %classpath your.package.MainClass"

答案 2 :(得分:0)

看看maven-exec-plugin。如果使用得当,您可以编译java类,然后在类路径上使用编译后的类执行java。要启动,您只需使用

即可
mvn exec:exec

答案 3 :(得分:0)

添加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