我有一个如下的多模块项目:
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
我发现只有工件从子模块1被发布。
真正奇怪的是,这仅在Jenkis作业(在Linux从站上)中运行时才会发生。在我的Windows开发机上运行时,它不会发生!
我想知道为什么从子模块2的工件未发布。
答案 0 :(得分:0)
我认为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}"
}
}
}
确认不适用Maven的发布在rootProject对个子模块常见的配置插件。