java如何解决gradle将jar上传到nexus的maven存储库时POM文件无效的问题?
当我使用gradle插件maven pbulish
将JAR上载到Maven存储库时,如何排除gradle项目中的一些依赖项?
我的格拉德尔。构建文件如下所示:
dependencies {
compile project(":frame:f_frame");
compile project(":p_AppComm");
compile project(":p_Systemaudit");
}
publishing {
repositories {
maven {
url = 'http://XXX/repository/infra_test_snapshot/'
credentials {
username = 'admin'
password = 'admin'
}
}
}
publications {
maven(MavenPublication) {
groupId "AAAAA"
artifactId "BBBBB"
version "CCCCC"
from components.java
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
configurations.implementation.allDependencies.each {
if (it.name != null && !"unspecified".equals(it.name) && !"f_frame".equals(it.name) && !"p_AppComm".equals(it.name)) {
println it.toString()
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
dependencyNode.appendNode('scope', 'implementation')
}
}
}
artifact sourceJar {
classifier "sources"
}
}
}
}
如何修改pom.withxml
函数的内容,以删除Maven存储库中POM文件依赖项中的f_frame
和p_Appcomm
# 1 楼答案
使用
maven-publish
插件发布jar包时,依赖项已根据dependencies{}
添加到自动生成的POM文件中。我不应该再添加相同的依赖项。正确的方法是循环asNode()
并移除我不需要的部分修改后的代码如下:
# 2 楼答案
dependencyNode.appendNode('scope', 'implementation')
。maven没有任何“实现”范围,有效值为-compile、provided、runtime、test打印依赖项循环中依赖项的所有名称/类型-排除所有“项目”类型依赖项-如您的if条件