2014-02-28 14 views
1

從這個article,我瞭解到Maven使用一箇中心位置來保存用於解決依賴性問題的開源代碼。這是一個非常方便的功能。但是,如果我使用Maven構建某個項目,即使沒有我的授權,是否會將我的源代碼上傳到Internet上的某個位置?未經我的授權,Maven能否將我的源代碼上傳到Central?

,當我試圖建立類似my-secret-service.jar一組ID com.notarealgroup,執行mvn install了一些像這樣的輸出末班時間:

Downloading: https://repository.jboss.org/nexus/content/groups/public/com/notarealgroup/my-secret-service/1.0/my-secret-service-1.0.jar 

這是非常混亂對我說:這怎麼可能my-secret-service-1.0.jarrepository.jboss.org被發現?它不應該在那裏(而且確實不在那裏)。

回答

2

當您引用一個庫時,maven會在本地回購庫中搜索它,然後默認情況下它會搜索公共存儲庫。它沒有上傳你的jar,但它仍然有一個安全問題,它將jar的名字傳遞給在線repo。如果你非常偏執(我現在的僱主這個偏執狂),那麼你想停止這一點,爲此你必須閱讀maven文檔。不過,請放心,除非您選擇將自己的東西部署到公共的Maven回購站,而這無論如何都不是微不足道的,它不會偶然發生。

0

不,Maven不會那麼做,因爲任何明智的「授權」定義。

要將您的工件上傳到中央,你需要:

  • 中央一套爲在distributionManagement上傳庫(有一個在SuperPOM沒有默認設置),
  • 您的環境中正確上傳權限設置中心(在你的settings.xml或以其他方式),
  • 您顯式或隱式地啓動部署,可以說最簡單的方法就是運行deploy階段。這些要求

可以從Maven的缺省配置中得到,尤其是在剛運行mvn install。在最壞的情況下,您需要將特製的項目設置爲父項,以便發生任何「不需要」的事情。 如有疑問,請檢查您的effective POM

在任何一種情況下,任何人都無法將任何工件上傳到中央 - 如果是這樣的話,我們會在這裏使用惡意構建的工件。

由於工程師Dollery在他的回答中提到,您所看到的消息是Maven的只是試圖下載的依賴,這恰好由您的自定義座標(groupIdartifactId)標識。這將我們帶到最後一個問題,我將回答另一個問題 - 爲什麼不能它在那裏?畢竟這只是一個神器。

+1

它只說'下載':換句話說'嘗試下載'。如果它能成功,它也會說'下載'。 –

+0

@RobertScholte:正好,因此「嘗試下載」:)。 –

相關問題