[英]Maven dependencies restrict to private repositories
我們有一個公司/私人 maven 注冊表(“artifactory”),我們的項目使用它來解決項目的依賴關系。
這個私有的 Maven 注冊表還代理 Maven Central 的公共依賴項,這意味着內部注冊表首先沒有解析的依賴項。
我們希望避免供應鏈攻擊,即有人使用 Maven Central 中的相同標識符重載我們在私有/公司 Maven 注冊表中使用的自定義依賴項。 比方說,即在 Maven Central 中發布一個惡意依賴工件,其groupId
和artifactId
與內部artifactId
相同,但version
更高 - 然后它會優先並在我們的系統中造成嚴重破壞。
在 npm 中,有一種機制允許“標記”對某個私有注冊表的依賴項(通過scope
)。
Maven 中是否有類似的機制,允許某些依賴項僅從內部工件解析,並防止它從 Maven Central 解析?
我在想像artifactory
這樣的artifactory
:
<dependency>
<groupId>org.acme</groupId>
<artifactId>supersecret</artifactId>
<version>3.141</version>
<artifactory>internal_corporate_artifactory_name</artifactory> <!-- as described in settings.xml or Super-Pom -->
</dependency>
你可以用不同的方式解決這個問題。
首先,您在settings.xml
定義了一個<mirror>
,以便所有請求都轉到您的 Artifactory。
在 Artifactory 中,您為要訪問的所有外部存儲庫定義一個虛擬存儲庫(它將是您用作 mirro 的通用虛擬存儲庫的一部分)。
現在對於該虛擬存儲庫,您可以定義“排除模式”。 這允許您告訴 Artifactory 不要針對外部存儲庫解析 groupId com.yourcompany
。
添加到 J Fabian Meier 的回答-
在鏡像 Maven Central 的遠程存儲庫上使用排除模式,例如排除與您公司的組 ID 匹配的工件。
可以在以下鏈接中找到更多信息:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.