您好,登錄后才能下訂單哦!
今天小編給大家分享一下Maven怎么運(yùn)行Java的Main方法的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
使用Maven從任何Java類(lèi)運(yùn)行任意main方法。
假設(shè)我們有以下類(lèi):
public class Exec { private static final Logger LOGGER = LoggerFactory.getLogger(Exec.class); public static void main(String[] args) { LOGGER.info("Running the main method"); if (args.length > 0) { LOGGER.info("List of arguments: {}", Arrays.toString(args)); } } }
我們想通過(guò) Maven 從命令行執(zhí)行它的 main 方法。
為了做到這一點(diǎn),我們可以使用 exec-maven-plugin。更具體地說(shuō),此插件的 exec:java 目標(biāo)執(zhí)行提供的 Java 類(lèi),并將封閉項(xiàng)目的依賴(lài)項(xiàng)作為類(lèi)路徑。
要執(zhí)行Exec類(lèi)的 main 方法,我們必須將類(lèi)的完全限定名稱(chēng)傳遞給插件:
$ mvn compile exec:java -Dexec.mainClass="com.baeldung.main.Exec"02:26:45.112 INFO com.baeldung.main.Exec - Running the main method
如上所示,我們使用 exec.mainClass 系統(tǒng)屬性來(lái)傳遞完全限定的類(lèi)名。
此外,在運(yùn)行 main 方法之前,我們必須確保類(lèi)路徑已準(zhǔn)備就緒。這就是我們?cè)趫?zhí)行 main 方法之前編譯源代碼的原因。
我們可以用普通的java 和 javac實(shí)現(xiàn)同樣的事情。 但是,當(dāng)我們使用相當(dāng)大的類(lèi)路徑時(shí),這可能會(huì)很麻煩。相反, 當(dāng)使用這個(gè)插件時(shí),Maven 會(huì)自動(dòng)處理填充類(lèi)路徑。
也可以將參數(shù)從命令行傳遞到 main 方法。為此,我們可以使用 exec.args 系統(tǒng)屬性:
$ mvn compile exec:java -Dexec.mainClass="com.baeldung.main.Exec" \ -Dexec.args="First Second" 02:31:08.235 INFO com.baeldung.main.Exec - Running the main method 02:31:08.236 INFO com.baeldung.main.Exec - List of arguments: [First, Second]
如上所示,我們傳遞了一個(gè)以空格分隔的參數(shù)列表。此外,我們可以通過(guò)exec.arguments 系統(tǒng)屬性使用逗號(hào)分隔的參數(shù)列表:
$ mvn compile exec:java -Dexec.mainClass="com.baeldung.main.Exec" \ -Dexec.arguments="Hello World,Bye" 02:32:25.616 INFO com.baeldung.main.Exec - Running the main method 02:32:25.618 INFO com.baeldung.main.Exec - List of arguments: [Hello World, Bye]
當(dāng)我們想在參數(shù)本身中使用分隔符(空格或逗號(hào))時(shí),這兩個(gè)選項(xiàng)非常有用。
我們還可以在pom.xml 中顯式聲明插件依賴(lài)項(xiàng) 。這樣,我們可以使用自定義和默認(rèn)配置。
例如,我們可以在插件的配置中指定一個(gè)默認(rèn)的主類(lèi):
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.0.0</version> <configuration> <mainClass>com.baeldung.main.Exec</mainClass> </configuration> </plugin> </plugins></build>
現(xiàn)在,如果我們不指定所需類(lèi)的完全限定名稱(chēng),將使用com.baeldung.main.Exec :
$ mvn compile exec:java02:33:14.197 INFO com.baeldung.main.Exec - Running the main method
但是,仍然可以通過(guò)顯式exec覆蓋此默認(rèn)配置。mainClass 系統(tǒng)屬性。
此外,我們還可以在配置中指定默認(rèn)程序參數(shù):
<configuration> <mainClass>com.baeldung.main.Exec</mainClass> <arguments> <argument>First</argument> <argument>Second</argument> </arguments></configuration>
這樣我們就不需要在命令行上傳遞這些參數(shù):
$ mvn clean compile exec:java02:34:24.448 INFO com.baeldung.main.Exec - Running the main method 02:34:24.450 INFO com.baeldung.main.Exec - List of arguments: [First, Second]
以上就是“Maven怎么運(yùn)行Java的Main方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。