如何解决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_framep_Appcomm

  1. dependencyNode.appendNode('scope', 'implementation')。Maven没有任何'implementation'作用域,有效值是- compile,提供,运行时,测试

  2. 打印依赖循环中所有依赖项的名称/类型-排除所有'project'类型的依赖项-就像你的if条件

当使用maven-publish插件发布jar包时,依赖项已经根据dependencies{}添加到自动生成的POM文件中。我不应该再添加相同的依赖项。正确的方法是循环asNode(),并删除我不需要的部分。

修改后的代码如下:

pom.withXml {
Node pom = asNode()
NodeList pomNodes = pom.value()
Node dependencies = pomNodes.get(4)
NodeList pomDependencies = dependencies.value()
Iterator iterator = pomDependencies.iterator();
while (iterator.hasNext()) {
Node dependeny = iterator.next()
NodeList str = dependeny.get("artifactId")
String dependName = str.get(0).value().get(0)
if ("f_frame".equals(dependName) || "p_AppComm".equals(dependName)) {
iterator.remove()
}
}
}

相关内容

最新更新