[英]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.