import upload.Bintray // 部分源码来自 kotlinx.coroutines // Source code from kotlinx.coroutines task ensureBintrayAvailable() { if (!Bintray.isBintrayAvailable(project)) { throw new IllegalStateException("bintray isn't available. ") } } if (!Bintray.isBintrayAvailable(project)) { println("bintray isn't available. NO PUBLICATIONS WILL BE SET") return } def pomConfig = { licenses { license { name "AGPL-V3" url "https://www.gnu.org/licenses/agpl-3.0.txt" distribution "repo" } } developers { developer { id "mamoe" name "Mamoe Technologies" email "support@mamoe.net" } } scm { url "https://github.com/mamoe/mirai" } } bintray { user = Bintray.getUser(project) key = Bintray.getKey(project) pkg { repo = 'mirai' name = "mirai-core" licenses = ['AGPL'] vcsUrl = 'https://github.com/mamoe/mirai' } } afterEvaluate { project.publishing.publications.forEach { publication -> publication.pom.withXml { def root = asNode() //root.appendNode('groupId', project.group) //root.appendNode('artifactId', project.name) //root.appendNode('version', project.version) root.appendNode('name', project.name) root.appendNode('description', project.description) root.appendNode('url', 'https://github.com/mamoe/mirai') root.children().last() + pomConfig } } } bintrayUpload.doFirst { publications = project.publishing.publications } bintrayUpload.dependsOn { def list = new LinkedList() list.add(tasks.getByName("build")) list.addAll(tasks.findAll { task -> task.name.contains('Jar') }) list.addAll(tasks.findAll { task -> task.name.startsWith('generateMetadataFileFor') }) list.addAll(tasks.findAll { task -> task.name.startsWith('generatePomFileFor') }) list } try { // empty xxx-javadoc.jar task javadocJar(type: Jar) { archiveClassifier = 'javadoc' } } catch (Exception ignored) { } publishing { publications.all { // add empty javadocs (no need for MPP root publication which publishes only pom file) if (it.name != 'kotlinMultiplatform') { it.artifact(javadocJar) } // Rename MPP artifacts for backward compatibility def type = it.name switch (type) { case 'kotlinMultiplatform': it.artifactId = "$project.name" break case 'metadata': it.artifactId = "$project.name-common" break case 'jvm': it.artifactId = "$project.name-jvm" break case 'js': case 'native': it.artifactId = "$project.name-$type" break } // disable metadata everywhere, but in native modules if (type == 'maven' || type == 'metadata' || type == 'jvm' || type == 'js') { moduleDescriptorGenerator = null } } }