fun Project.setupPublishing(filter: (Project) -> Boolean = { true }) { ​ // Configure sub-projects ​ for (sub in subprojects.filter(filter)) { ​ sub.afterEvaluate { ​ val bintrayApiKey = System.getenv()["BINTRAY_PUBLISH_KEY"] ?: "my key" // TODO: remove default value!!!!! if (sub.libVersion != null && bintrayApiKey != null) { ​ sub.archivesBaseName = archiveName ​ val applyConfig: PublishConfig.(Project) -> Unit = { projectName = null // Use this very Project version = sub.libVersion!!.versionName developers(applyDevelopers) ​ apiKey = bintrayApiKey } ​ if (sub.plugins.hasPlugin("com.android.base")) sub.publishAndroid(applyConfig) else sub.publish(applyConfig) ​ val publishTask = sub.tasks.getByName("bintrayUpload").doFirst { with(sub.ReleaseManager) { moveArchives("releases") generateKdocIfNeeded() updateReadme() } } ​ sub.tasks.register("publishAll") { dependsOn(publishTask) } } } } }