Как я могу опубликовать много зависимых подпроектов в определенном порядке с Gradle? - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь опубликовать два подпроекта с Gradle.У меня есть два подпроекта: SubprojectA зависит от SubprojectB.Я хочу опубликовать их оба, используя maven-publish.У меня есть это в build.gradle:

plugins {
    id 'java'
    id 'maven-publish'
}

publishing {
    publications {
        SubprojectA(MavenPublication) {
            println(project(':subprojectA').tasks)
            groupId group
            artifactId 'subjprojectA'
            version version
            artifact project(':subprojectA').tasks.getByName('jar')
        }
        SubprojectB(MavenPublication) {
                groupId group
                artifactId 'subjprojectB'
                version version
                artifact project(':subjprojectB').tasks.getByName('jar')
        }
    }
    repositories {
        maven {
                url "http://some-url"
        }
    }
}

Gradle пытается опубликовать их в алфавитном порядке: так как subprojectA зависит от subprojectB, он не работает, потому что subprojectB еще не был опубликован.Если я переименую подпроект A в ZSubprojectA, например:

        ZSubprojectA(MavenPublication) {
            println(project(':subprojectA').tasks)
            groupId group
            artifactId 'subprojectA'
            version version
            artifact project(':subprojectA').tasks.getByName('jar')
        }

, тогда это будет работать, но мне не нравится это решение.Я пробовал что-то вроде этого:

project(':subprojectA') {
    publish.dependsOn(":subprojectB:build")
}

, но это не работает, и: subprojectB: publish не существует.

1 Ответ

0 голосов
/ 26 октября 2018

Я смог решить это.Это была проблема:

Оба подпроекта имели свои соответствующие файлы build.gradle.В build.gradle подпроекта A было что-то вроде этого:

plugins {
    id 'java'
}

sourceCompatibility = 1.8

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    implementation group: 'com.neovisionaries', name: 'nv-i18n', version: '1.22'
    implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.1'
    implementation group: 'com.myorg.something', name: 'subprojectB', version: '1.0.0-SNAPSHOT'

}

Поэтому он пытался получить подпроект B из частного репозитория моей организации, и я должен был сделать что-то вроде этого:

compile project(":subprojectB")

Я должен был включить оба файла build.gradle в свой вопрос.Но проблема решена.

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