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

新手上路,请多包涵

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

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

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

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

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

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

原文由 phedon rousou 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 828
2 个回答

您可以运行: 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"

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

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

原文由 Behe 发布,翻译遵循 CC BY-SA 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

原文由 Tommy1005 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题