[英]Gradle: Changing configuration of external dependency
我們正處於將公共集合從版本3更新到版本4的情況。由於他們已將組ID更改為commons-collections4,我們最終將在類路徑中擁有2個版本的commons-collection。 版本3和版本4.對於我們的開發,應使用版本4。 版本3將通過外部依賴進入,所以如果我們有:
compile ("org.hibernate:hibernate-entitymanager:3.5.6-Final")
版本3將通過hibernate-entitymanager進入,也將在編譯時提供。 所以開發人員可以使用它。
有沒有辦法說“commons-collections 3現在應該被視為運行時依賴hibernate-entitymanager”?
我們正在使用Gradle 3.5。
不確定是否存在實現此目的的正確方法,但是如果在compile
配置中強制所有版本的commons3
替換為commons4
,並且另外定義僅runtime
注釋,該怎么辦?
configurations.compile {
resolutionStrategy.force 'commons4',
}
dependencies {
runtime('commons3')
}
看到這里他們使用的replacedBy
來告訴gradle com.google.collections:google-collections
被com.google.guava:guava
取代。 Gradle現在將這兩個模塊視為依賴解析中的單個模塊,並且永遠不會包含這兩個模塊。
dependencies {
modules {
module("com.google.collections:google-collections") {
replacedBy("com.google.guava:guava")
}
}
}
感謝webdizz讓我了解這個想法,似乎我通過執行以下操作來管理它:
configurations.compileClasspath.resolutionStrategy {
dependencySubstitution {
substitute module('commons-collections:commons-collections') with module("org.apache.commons:commons-collections4:${COMMONS_COLLECTIONS_VERSION}")
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.