簡體   English   中英

Maven和Intellij的構建方式不同

[英]Maven and Intellij builds differently

我有一個父母pom。 當我在父母那里寫mvn clean install我的dropwizard應用程序構建良好。

但是,在Intellij中失敗,因為找不到我的config.yml文件。

問題是我需要在Intellij中包括我的模塊目錄,但不在Maven中。 這是為什么?

運行mvn install這工作

public static void main(String[] args) throws Exception {
    new CivilizationApplication().run(new String[]{"server", "src/main/resources/config.yml"});
}

在Intellij中,我必須更改為以下內容

public static void main(String[] args) throws Exception {
    new CivilizationApplication().run(new String[]{"server", "civilization-rest/src/main/resources/config.yml"});
}

我該如何配置Intellij,這樣它就可以在不指定模塊目錄的情況下工作?

您可以嘗試在運行配置中設置工作目錄...

在此處輸入圖片說明

我還將調查您的pom.xml配置,以查看是否可以在導入maven項目時更改工作源集以使用此目錄。

Working directory設置為$MODULE_DIR$ Maven始終使用$ MODULE_DIR $,但是默認情況下您可能沒有$ MODULE_DIR $用於IntelliJ Application執行。

在此處輸入圖片說明

您可以告訴Intellij啟動Maven時完全相同。

您可以通過單擊“啟動應用程序”按鈕旁邊的下拉菜單來實現。 您可以在此處定義新的使用Maven的運行配置,方法是單擊左側的+,然后選擇Maven。

然后,您可以只輸入clean install exec:java並顯示“命令行”,它的工作方式應與從命令行手動執行時的工作方式完全相同。 調試也應該像這樣工作,沒有任何問題。

在此處輸入圖片說明

這里的問題是您通過使用相對路徑而不是使用類路徑來引用資源文件。

所以,代替

new CivilizationApplication().run(new String[]{"server", "src/main/resources/config.yml"});

你最好有這個

new CivilizationApplication().run("server", getClass().getResourceAsStream("config.yml"));

(顯然,還要確保也更改#run()方法的簽名)

只是一個想法,但可能與資源未被復制有關。

我使用的是OSX,因此如果您使用的是Windows,則確切的術語可能有所不同,但對我而言...在“首選項”中,選擇“構建,執行,部署”,然后選擇“編譯器”,然后嘗試添加“;?*。yml”資源模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM