在 CI/CD、伺服器部署或無形介面環境中,透過 Maven 直接啟動含 main 方法的類別是必備技能。本文整理三種常用指令,涵蓋編譯、無參執行、帶參數執行。
src/main/java)public static void main(String[] args)| 場景 | 指令 | 說明 |
|---|---|---|
| 僅編譯 | mvn compile | 將原始碼編譯至 target/classes,不執行 |
| 直接執行 | mvn exec:java -Dexec.mainClass="com.example.Main" | 使用 exec-maven-plugin 啟動主類,需類別路徑正確 |
| 傳遞參數 | mvn exec:java -Dexec.mainClass="com.example.Main" -Dexec.args="arg0 arg1 arg2" | args 以空格分隔,會傳入 main(String[] args) |
在 pom.xml 中顯式宣告插件版本,避免版本衝突:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<mainClass>com.example.Main</mainClass> <!-- 預設主類,命令列可覆蓋 -->
</configuration>
</plugin>
配置後可簡化為 mvn exec:java 直接跑預設主類。
mvn compile 或 mvn package,類別檔案存在。exec:java 會自動載入 compile 作用域依賴;若用 java -cp 需手動拼接所有 jar。-pl module-name。若需產出可獨立部署的 Fat JAR,建議使用 maven-shade-plugin 或 spring-boot-maven-plugin 打包後以 java -jar 執行,效能與攜帶性更佳。