[英]Generate Maven “provided” dependency in pom.xml from Gradle “compileOnly”
如果我理解正確,Gradle 的compileOnly
依賴對應於 Gradle 較舊的provided
,同時 Maven POM 的provided
。 它在 Gradle 世界中完美運行。
但是, compileOnly
不會在maven-publish
生成的pom.xml
中生成任何provided
的依賴項。
我們正在使用 Gradle 將 Maven 工件發布到 Maven Central。 我們想在 Gradle 的compileOnly
發布的pom.xml
中明確聲明provided
。
有誰知道是否有任何簡單的方法可以做到這一點? 或者,我們是否需要編寫自己的 Gradle 腳本:
publishing {
publications {
maven(MavenPublication) {
pom {
/* Our own Gradle scripting to declare provided dependencies. */
}
}
}
}
我知道我們可以通過像下面這樣編寫臟腳本來調整它,但我們基本上不想在build.gradle
中“編寫腳本”。
publishing {
publications {
maven(MavenPublication) {
pom {
withXml {
project.configurations.compileOnly.allDependencies.each { dependency ->
asNode().dependencies[0].appendNode("dependency").with {
it.appendNode("groupId", dependency.group)
it.appendNode("artifactId", dependency.name)
it.appendNode("version", dependency.version)
it.appendNode("scope", "provided")
}
}
}
}
}
}
}
我認為腳本是 go 的方式...你可以創建一個方法來傳遞 pom 例如
publishing {
publications {
mavenDependencyList(MavenPublication) {
fixDependencyScope(pom)
}
}
}
void fixDependencyScope(pom) {
pom.withXml {
asNode().dependencies.'*'.findAll() {
it.scope.text() == 'compileOnly' && project.configurations.compile.allDependencies.find { dep ->
dep.name == it.artifactId.text()
}
}.each() {
it.scope*.value = 'provided'
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.