2013-12-22 96 views
3

我有一段代碼是適用於其他解決方案的代碼(例如:A,B,C)。用戶選擇他們將在他們的項目中使用哪種解決方案(只有一種)(通過此適配器)。顯然,我仍然需要用A,B,C依賴關係編譯我的代碼。但是我不想在A,B,C上都有compile依賴關係 - 例如,如果用戶選擇解決方案A,他不需要包含B或C.Maven:可選提供的範圍?

我應該聲明A,B,C依賴項在我的POM爲:

  1. provided
  2. provided,但optional
  3. 剛從POM
  4. 刪除

換句話說:的確provided意味着用戶必須在其運行時提供實現?

Thanx!

編輯:類似this question

回答

2

它應該是provided - optional

查看鏈接的問題的答案。

0

你應該使用提供。據推測他們正在實現一個你有共同點的界面(無論是你的還是第三方)。您可以根據接口進行編譯,並且在運行時不知何故,它們提供了實現。

+0

換句話說,「提供但可選」沒有意義? '提供'是否意味着用戶必須提供實現? – igr

+0

這取決於你的代碼,但大多數答案是肯定的。如果未提供依賴關係,那麼您很可能會發現類沒有發現異常,儘管您可能可以根據您的應用程序的配置進行編碼。一般來說,這有點困難。可選的依賴關係並不意味着這一點。 –