繁体   English   中英

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

[英]Maven: How to run a .java file from command line passing arguments

我有以下问题。 我想从命令行为Main.java文件运行mvn 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"

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

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

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

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

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

mvn exec:exec

这种方法是半行命令,half.pom 文件。 你可以把你的参数放在<build> </build>标签内的插件中,像这样

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
        <mainClass>%classpath your.package.MainClass</mainClass>
        <arguments>
            <argument>your_arg</argument>
        </arguments>
    </configuration>
</plugin>

现在你的 arg 在 pom 文件中。 然后只需在命令行中执行它

mvn clean compile exec:java

你可以放很多参数:

       <arguments>
            <argument>your_arg1</argument>
            <argument>your_arg2</argument>
            <argument>your_arg3</argument>
        </arguments>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM