溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Maven怎么運(yùn)行Java的Main方法

發(fā)布時(shí)間:2022-09-28 11:15:58 來(lái)源:億速云 閱讀:246 作者:iii 欄目:web開(kāi)發(fā)

今天小編給大家分享一下Maven怎么運(yùn)行Java的Main方法的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

1.概述

使用Maven從任何Java類(lèi)運(yùn)行任意main方法。

2.exec-maven-plugin

假設(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)路徑。

3.傳遞參數(shù)

也可以將參數(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)非常有用。

4.自定義配置

我們還可以在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è)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI