плагин gradle maven-publish только публикация первых артефактов субмодулей - PullRequest
0 голосов
/ 31 января 2019

У меня есть многомодульный проект следующим образом:

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

Я считаю, что только артефакты из суб-module1 опубликован.

Что действительно странно в этом, так это то, что это происходит только при запуске в задании Jenkis (на подчиненном Linux).Это не происходит при запуске на моем компьютере с Windows!

Мне интересно, почему артефакты из подмодуля 2. не публикуются.

1 Ответ

0 голосов
/ 31 января 2019

Я думаю, что есть ошибка в плагине maven-publish.Обходной путь состоял в том, чтобы не определять конфигурацию publishing.repositories.maven в корневом модуле, а дублировать ее в подмодуле1 и подмодулях2 следующим образом:

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

Убедитесь, что не применен плагин maven-publishв общей конфигурации rootProject для подмодулей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...