Совместное использование задачи uploadArchives между модулями - PullRequest
0 голосов
/ 26 марта 2020

Я работаю над репо с набором высвобождаемых библиотек, каждая в модуле. Идея заключается в том, что каждая библиотека должна быть в состоянии выпускаться по отдельности, например, ./gradlew upload.

. В настоящее время в каждом модуле у меня есть следующий код для публикации sh it:

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "<url>") {
                authentication(userName: System.getenv('USER_NAME'), password: System.getenv('PASSWORD'))
                pom.groupId = "$groupId"
                pom.artifactId = "$artifactId"
                pom.version = android.defaultConfig.versionName
            }
        }
    }
}

afterEvaluate {
    publishing {
        publications {
            library(MavenPublication) {
                setGroupId "$groupId"
                setArtifactId "$artifactId"
                version android.defaultConfig.versionName

                artifact bundleReleaseAar
            }
        }
    }
}

Я хотел бы иметь возможность поделиться этими сложными задачами и не повторять их в каждом модуле, но не нашел способа сделать это. Одна хитрость, вероятно, заключается в том, что artifactId будет отличаться в каждом модуле, поэтому при условии, что я смогу извлечь эти сложные задачи, должен быть способ установить artifactId индивидуально.

Может кто-нибудь пролить мне свет? Спасибо

1 Ответ

0 голосов
/ 27 марта 2020

Вы можете поместить весь свой код в простой build.gradle и использовать apply from: для применения к нескольким build.gradle файлам.

Например, у меня есть скрипт compile.gradle , который я использую во многих местах: kotlin / build.gradle и java / build.gradle .

Вместо того, чтобы писать собственную «публикацию» build.gradle, я бы предложил вам популярный скрипт с открытым исходным кодом, который легко доступен, gradle-mvn-pu sh .gradle .

Вот пример установки для вашего проекта:

root
 |
 | gradle
 | --- gradle-mvn-mpp-push.gradle
 |
 | - module a
 | --- build.gradle - apply from: rootProject.file("gradle/gradle-mvn-mpp-push.gradle")
 |
 | - module b
 | --- build.gradle - apply from: rootProject.file("gradle/gradle-mvn-mpp-push.gradle")
 |

См. Документы здесь: https://docs.gradle.org/current/userguide/plugins.html#sec: script_plugins

...