簡體   English   中英

intellij是否以不同的用戶身份運行maven?

[英]Does intellij run maven as a different user?

我已經配置了執行器以檢查某些屬性。 這些作為環境變量導出到我家的目錄中的.profile文件中。 從控制台構建運行正常。

intellij的構建(雙擊maven菜單中的目標)失敗,因為執法者找不到屬性......這里出了什么問題以及如何修復它?

我的第一個猜測是intellij正在以不同的用戶身份運行maven,但我不確定如何驗證它或如何處理它。

注意:我不是在尋求解決方法。 一種是在intellij的maven Runner設置中設置屬性,第二種是在/etc/profile設置屬性。 但我想避免它們。

編輯 :我試圖重新啟動intellij,X服務器和計算機-對強制程序沒有影響。 全新控制台中的printenv按預期顯示了我的變量。 從同一控制台啟動intellij會導致相同的構建失敗。

謝謝。

每個程序都有自己的環境。 如果更改.profile等中的環境設置,則不會更改運行程序的設置。 當一個程序運行另一個程序時,它繼承其父程序的設置/環境。 它不會再次加載設置。

您可能會發現,IntelliJ啟動后所做的更改對IntelliJ運行的程序沒有任何影響。 如果您打開命令窗口,更改設置並運行新程序(shell將保留啟動時的設置),也會發生同樣的事情。要修復此問題,您需要重新啟動IntelliJ。 如果從命令行運行它,請確保它是一個新窗口。


此單元測試應該轉儲環境。

@Test
public void dumpEnv() {
    for (Map.Entry<String, String> entry : new TreeMap<String, String>(System.getenv()).entrySet()) {
        System.out.println(entry);
    }
}

.profile僅在您使用KSH登錄時執行。 如果使用BASH,則無效。

.bashrc (如果你使用BASH)是一個更合適的地方,因為它是每次你啟動一個shell(shell腳本,新的終端窗口等)時執行的。

對於KSH, .kshrc具有相同的效果

要確保變量存在,請使用set (無選項)列出所有變量或使用set|grep 模式進行搜索。 一旦它們出現在新的終端窗口中,它們也應該從IDE內部出現。

[編輯]如果set可以看到它們,IntelliJ也可以。 唯一剩下的就是IntelliJ可以在啟動Maven時清理環境。

要進行測試, mvn.orig mvn重命名為mvn.orig並創建一個具有以下內容的新腳本mvn

#!/bin/bash
set > $HOME/mvn_env.log
mvn.orig "$@"

此腳本將mvn看到的環境轉儲到$HOME/mvn_env.log 如果缺少變量,則IntelliJ會清除環境。

暫無
暫無

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

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