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

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

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

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

慕工程0101907 2021-08-25 10:20:13
我繼承了一個(gè)帶有數(shù)十個(gè)“提供”范圍依賴項(xiàng)的 Maven 項(xiàng)目。我正在插入一個(gè)新的依賴項(xiàng),該依賴項(xiàng)本身依賴于前面提到的“提供”依賴項(xiàng)之一。這個(gè)新依賴的范圍是“compile”/default 標(biāo)簽。該應(yīng)用程序無需添加新的依賴項(xiàng)即可運(yùn)行。使用新依賴項(xiàng)成功編譯應(yīng)用程序后,應(yīng)用程序在運(yùn)行時(shí)失敗,因?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個(gè)贊

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


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

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

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

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

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

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

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


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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