gpt4 book ai didi

Gradle Maven 发布 : How to add testCompile dependencies to generated pom?

转载 作者:行者123 更新时间:2023-12-03 02:55:56 24 4
gpt4 key购买 nike

当使用 maven-publish 发布时(我知道正在孵化),compile 依赖项被添加到生成的 POM 中(在 runtime 范围),但忽略了 testCompile 依赖项。

如何将 testCompile 依赖项作为 test 作用域放入生成的 POM 中?

最佳答案

我花了几个小时找到了一个很好的方法来选择工件或出版物应该使用的构建配置,但没有成功。我的发现是,实现它的唯一方法是修改生成的 POM XML,如下所示:

// build.gradle

publishing {
repositories { /* skipped for brevity */ }

publications {
core(MavenPublication) {
from components.java
artifactId project.name

artifact sourcesJar {
classifier 'sources'
}
}

generators(MavenPublication) {
from components.java
artifactId "${project.name}-generators"

artifacts = [ generatorsJar ]
artifact generatorsSourcesJar {
classifier 'sources'
}

pom.withXml { pomXml -> replaceDependenciesWith('generatorsBase', pomXml) }
}
}
}

void replaceDependenciesWith(String configurationName, XmlProvider pomXml) {
Node configurationDependencies = new Node(null, 'dependencies')
project.configurations.getByName(configurationName).allDependencies.each { dep ->
Node dependency = new Node(null, 'dependency')
dependency.appendNode('groupId', dep.group)
dependency.appendNode('artifactId', dep.name)
dependency.appendNode('version', dep.version)
dependency.appendNode('scope', 'compile')
configurationDependencies.append(dependency)
}
pomXml.asNode().dependencies*.replaceNode(configurationDependencies)
}

以上在 Gradle 3.3 上工作


对 Groovy 类 XML 构建器语法的评论

我还尝试使用 Groovy 的类似 XML 构建器的语法,但不幸的是,错误的上下文附加到传递给 replaceNode 方法的闭包,因此它不起作用。当内联时,它获得与 publications{} 闭包相同的上下文,而当提取到方法时,version dep.version 没有按预期工作。

// Does not work!
void replaceDependenciesWith(String configurationName, Node pomXmlNode) {
pomXmlNode.dependencies*.replaceNode {
dependencies {
project.configurations.getByName(configurationName).allDependencies.each { dep ->
dependency {
groupId dep.group
artifactId dep.name
version dep.version
scope 'compile'
}
}
}
}
}

关于Gradle Maven 发布 : How to add testCompile dependencies to generated pom?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28813211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com