gpt4 book ai didi

gradle maven-publish 插件仅发布第一个子模块工件

转载 作者:行者123 更新时间:2023-12-03 05:38:35 30 4
gpt4 key购买 nike

我有一个多模块项目如下:

top-level-module
sub-module-1
sub-module-2
sub-module-3

顶级模块 gradle 配置如下所示:
...
def javaProjects() {
subprojects.findAll { new File(it.projectDir, 'src/main/java').directory }
}

configure(javaProjects()) {
apply plugin: "io.franzbecker.gradle-lombok"
apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: "jacoco"
apply plugin: 'maven'
apply plugin: 'maven-publish'

...
publishing {
repositories {
maven {
url = ...
credentials {
username = ...
password = ...
}
}
}
}
}


sub-module-1 和 sub-module-2 的 gradle 配置如下:
plugins {
id 'java'
id 'groovy'
id 'application'
id 'maven'
id 'maven-publish'
}

mainClassName = 'com.mycompany.MyClass'
applicationName = 'xxx-cli' // xxx-cli is different for both modules

...

publishing {
publications {
XXXCliTar(MavenPublication) { // XXXCliTar is different in two modules
artifact(distTar)
artifactId "${applicationName}"
}
}
}

当我按如下方式使用发布任务时:
gradle -i build publish
我发现只发布了 sub-module1 中的工件。

真正奇怪的是,这只发生在 Jenkis 作业中(在 linux slave 上)运行时。在我的 Windows 开发机器上运行时不会发生这种情况!

我想知道为什么 sub-module2 中的工件没有发布。

最佳答案

我认为 maven-publish 插件中有一个错误。解决方法是不在根模块中定义 publishing.repositories.maven 配置,而是在 sub-module1 和 sub-modules2 中复制它,如下所示:

publishing {
publishing {
repositories {
maven {
url = ...
credentials {
username = ...
password = ...
}
}
}
}
publications {
XXXCliTar(MavenPublication) { // XXXCliTar is different in two modules
artifact(distTar)
artifactId "${applicationName}"
}
}
}

确保不在 rootProject 的子模块通用配置中应用 maven-publish 插件。

关于gradle maven-publish 插件仅发布第一个子模块工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54468397/

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