該賞金過期5天。回答這個問題有資格獲得 50聲望獎勵。 Rpj正在尋找信譽良好的來源的答案。
如何創建公司特定的父依賴檔案,該檔案可在公司特定的 gradle 啟動專案中使用
我想跨專案共享的示例庫
dependencies {
// logging
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.30'
implementation group: 'org.slf4j', name: 'log4j-over-slf4j', version: '1.7.30'
// elasticsearch
implementation group: 'org.elasticsearch', name: 'elasticsearch', version: '7.13.2'
implementation group: 'org.elasticsearch.client', name: 'elasticsearch-rest-high-level-client', version: '7.13.2'
}
uj5u.com熱心網友回復:
這取決于父 POM 的目標是什么?如果僅用于合并依賴版本,則可以使用版本目錄。版本目錄是依賴項串列,表示為依賴項坐標,用戶可以在構建腳本中宣告依賴項時從中選擇。
settings.gradle
enableFeaturePreview('VERSION_CATALOGS')
dependencyResolutionManagement {
versionCatalogs {
libs {
// logging
alias('slf4j-api').to('org.slf4j:slf4j-api:1.7.30')
alias('log4j-over-slf4j').to('org.slf4j:log4j-over-slf4j:1.7.30')
// elasticsearch
alias('elasticsearch').to('org.elasticsearch:elasticsearch:7.13.2')
alias('elasticsearch-client').to('org.elasticsearch.client:elasticsearch-rest-high-level-client:7.13.2')
alias('elasticsearch-rest').to('org.elasticsearch.client:elasticsearch-rest-client:7.13.2')
}
}
}
build.gradle
dependencies {
// logging
implementation libs.slf4j.api
implementation libs.log4j.over.slf4j
// elasticsearch
implementation libs.elasticsearch
implementation libs.elasticsearch.client
implementation libs.elasticsearch.rest
}
uj5u.com熱心網友回復:
您可以創建一個單獨的 Gradle 專案,該專案為整個公司維護一個版本目錄。然后該專案將版本目錄發布到公司特定的存盤庫(如 Artifactory)。然后其他公司專案可以獲取和使用已發布的版本目錄。
版本目錄不僅可以用在普通的專案依賴宣告中,也可以用在插件依賴宣告中。
重要提示:在撰寫本文時,此依賴項的中央宣告功能仍在孵化中(在最新的 Gradle 版本 7.3.2 中)。另請參閱此 Gradle 檔案部分的警告。
示例專案
下面是兩個完整的示例專案:
mycompany-catalog是維護和發布版本目錄的專案。mycompany-app是一些使用已發布版本目錄的應用程式。
我已經用 Gradle 7.3.2 測驗了這個設定。為了簡單和自包含,我使用本地 Maven 存盤庫。
mycompany-catalog 專案
您可以按如下方式發布版本目錄:
./gradlew publish
另請參閱 Gradle 檔案:
- 該
version-catalog插件 - 如何宣告版本目錄
settings.gradle
enableFeaturePreview('VERSION_CATALOGS')
rootProject.name = 'mycompany-catalog'
build.gradle
plugins {
id 'version-catalog'
id 'maven-publish'
}
// the coordinates of the published catalog
group = 'com.mycompany'
version = 0.42
catalog {
versionCatalog {
// logging
alias('slf4j-api').to('org.slf4j:slf4j-api:1.7.30')
alias('log4j-over-slf4j').to('org.slf4j:log4j-over-slf4j:1.7.30')
// elasticsearch
alias('elasticsearch').to('org.elasticsearch:elasticsearch:7.13.2')
alias('elasticsearch-rest-high-level-client').to(
'org.elasticsearch.client:elasticsearch-rest-high-level-client:7.13.2')
}
}
publishing {
publications {
maven(MavenPublication) {
from components.versionCatalog
}
}
repositories {
// the company-internal repo to which we publish the version catalog
maven {
url = 'file:///tmp/mycompany-repo'
}
}
}
mycompany-app 專案
您可以使用以下方法檢查這是否按預期作業:
./gradlew dependencies --configuration runtimeClasspath
另請參閱有關匯入已發布目錄的 Gradle 檔案。
settings.gradle
enableFeaturePreview('VERSION_CATALOGS')
rootProject.name = 'mycompany-app'
dependencyResolutionManagement {
repositories {
// the same company-internal repo (to which we published the version
// catalog in the other project)
maven {
url = 'file:///tmp/mycompany-repo'
}
// a repository from which the external dependencies are fetched
mavenCentral()
}
versionCatalogs {
libs {
// our published catalog
from('com.mycompany:mycompany-catalog:0.42')
}
}
}
build.gradle
plugins {
id 'java'
}
dependencies {
// logging
implementation(libs.slf4j.api)
implementation(libs.log4j.over.slf4j)
// elasticsearch
implementation(libs.elasticsearch)
implementation(libs.elasticsearch.rest.high.level.client)
}
// …
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/389647.html
