如何解决gradle上传jar到nexus的maven仓库时POM文件无效的问题?
How to solve the problem of invalid POM file when gradle uploads jar to maven repository of nexus?
使用gradle插件maven pbulish
上传jar到Maven仓库时,如何排除gradle项目中的一些依赖?
我的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
dependencyNode.appendNode('scope', 'implementation')
。 maven 没有任何 'implementation' 作用域,有效值为 - compile、provided、runtime、test
打印依赖循环中依赖的所有名称/类型 - 排除所有 '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()
}
}
}
使用gradle插件maven pbulish
上传jar到Maven仓库时,如何排除gradle项目中的一些依赖?
我的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
dependencyNode.appendNode('scope', 'implementation')
。 maven 没有任何 'implementation' 作用域,有效值为 - compile、provided、runtime、test打印依赖循环中依赖的所有名称/类型 - 排除所有 '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()
}
}
}