第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Maven 依賴問題:提供和編譯依賴一起工作

Maven 依賴問題:提供和編譯依賴一起工作

慕工程0101907 2021-08-25 10:20:13
我繼承了一個帶有數(shù)十個“提供”范圍依賴項(xiàng)的 Maven 項(xiàng)目。我正在插入一個新的依賴項(xiàng),該依賴項(xiàng)本身依賴于前面提到的“提供”依賴項(xiàng)之一。這個新依賴的范圍是“compile”/default 標(biāo)簽。該應(yīng)用程序無需添加新的依賴項(xiàng)即可運(yùn)行。使用新依賴項(xiàng)成功編譯應(yīng)用程序后,應(yīng)用程序在運(yùn)行時失敗,因?yàn)樾乱蕾図?xiàng)找不到“提供的”依賴項(xiàng)。是否有必要讓所有“提供的”依賴項(xiàng)與“提供的”依賴項(xiàng)一起使用(并且與任何其他范圍相同——它們只適用于它們的種類)?我想不出任何其他解釋為什么新的默認(rèn)/“編譯”依賴項(xiàng)不能與現(xiàn)有的“提供”依賴項(xiàng)一起使用。正如我所提到的,在引入任何新依賴項(xiàng)之前,它們已經(jīng)明確提供并起作用。
查看完整描述

1 回答

?
慕蓋茨4494581

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個贊

問題不在于您的編譯依賴項(xiàng)依賴于提供的依賴項(xiàng),而是提供的依賴項(xiàng)在運(yùn)行時不存在。我只能猜測為什么會這樣,但一個可能的解釋是它已經(jīng)丟失了,只是之前沒有人在運(yùn)行時實(shí)際使用過該依賴項(xiàng),所以這無關(guān)緊要。


本質(zhì)上,通過建立依賴關(guān)系:

  • compile,你是說“我需要這個來編譯我的代碼,我在運(yùn)行時也需要它”

  • 提供,你說“我需要這個來編譯我的代碼,但在運(yùn)行時其他人會提供它”

  • 運(yùn)行時,你說“我不需要它來編譯我的代碼,但在運(yùn)行時需要它”

compile是默認(rèn)和最常見的作用域,因?yàn)榇蠖鄶?shù)依賴項(xiàng)在編譯時和運(yùn)行時都需要,所以告訴 Maven 在這兩種情況下傳播它們是有意義的。

提供的是其他人將在運(yùn)行時提供庫的情況(例如,servlet 容器通常將servlet-api.jar作為基礎(chǔ)結(jié)構(gòu)的一部分提供)。然而,當(dāng)您需要針對某個庫進(jìn)行編譯時,此范圍有時也(ab)用于奇怪的情況,但實(shí)際上將/可能不會在運(yùn)行時使用它(例如可選功能)。對于您的情況,同樣重要的是,如果依賴項(xiàng)實(shí)際上并未在運(yùn)行時提供并且嘗試在運(yùn)行時使用它,則應(yīng)用程序只會在提供的依賴項(xiàng)上失敗。

當(dāng)有 API 工件和實(shí)現(xiàn)工件時,運(yùn)行時是非常常見的范圍,例如slf4j-apislf4j-log4j- 然后您只需要在編譯時使用 API,但在運(yùn)行時需要 API 和實(shí)際實(shí)現(xiàn)。


查看完整回答
反對 回復(fù) 2021-08-25
  • 1 回答
  • 0 關(guān)注
  • 185 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號