Do JCenter ao Maven ou uma breve postagem sobre a publicação da multiplataforma Kotlin

Recentemente, houve notícias de que o JCenter será encerrado em breve e como podemos continuar a viver lá não foi dito que precisamos nos mudar para outro lugar. Para mim pessoalmente, o MavenCentral tornou-se o principal candidato, pois já trabalho lá há muito tempo, embora no ano passado me acostumei a fazê-lo através do Bintray. Neste post, haverá breves informações sobre os subaquáticos que conheci e como tive que mudar meus roteiros de publicação.





ESTE ARTIGO NÃO TEM NENHUMA INFORMAÇÃO SOBRE A PUBLICAÇÃO DE ALVOS NATIVOS . No entanto, espero que as informações neste artigo sejam úteis para você.





Provavelmente já escreveu

De fato, existem vários artigos sobre esse assunto ( 2019 e 2021 ), mas no momento não vi um único artigo completo com informações sobre a publicação de scripts (provavelmente, apenas procurei no lugar errado). Usado na maioria das informações podem ser retiradas de um artigo (registro Sonatype, registro de domínio, criação de chave GPG e sua finalidade e não só). O seguinte é um script universal para publicar um projeto multiplataforma:





apply plugin: 'maven-publish'
apply plugin: 'signing'

task javadocsJar(type: Jar) { // ,  javadocs     
    classifier = 'javadoc'
}

publishing {
    publications.all {
        artifact javadocsJar

        pom {
            description = "  "
            name = "${project.name}"
            url = "https://github.com/Owner/Project" //     ,     github

            scm {
                developerConnection = "scm:git:[fetch=]/*   .git */[push=]/*  */"
                url = "/*    */"
            }

            developers {
                    developer {
                        id = "ID "
                        name = " "
                        email = "email "
                    }
            }

            licenses {
                    license {
                        name = " "
                        url = "  LICENSE "
                    }
                
            }
        }
        
        repositories {
            //   Maven Central
            maven {
                name = "sonatype"
                url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/")
                credentials {
                    username = project.hasProperty('SONATYPE_USER') ? project.property('SONATYPE_USER') : System.getenv('SONATYPE_USER')
                    password = project.hasProperty('SONATYPE_PASSWORD') ? project.property('SONATYPE_PASSWORD') : System.getenv('SONATYPE_PASSWORD')
                }
            }
        }
    }
}

signing {
    useGpgCmd()
    sign publishing.publications
}

      
      



Você pode ver um exemplo deste script aqui . Ao mover do JCenter, encontrei os seguintes erros:





  • maven url uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/")







  • publishing.publications ( , Java ( Android) )





gradle SONATYPE_USER



SONATYPE_PASSWORD



. :





  • ~/.gradle/gradle.properties







  • ( CI )





, . :





$ ./gradlew --no-parallel publishAllPublicationsToSonatypeRepository
      
      



--no-parallel



aqui é usado pela razão de que se você usar a construção paralela do projeto (bandeira --parallel



ou org.gradle.parallel=true



em gradle.properties



), então sem a bandeira de desabilitar a construção paralela, a publicação será feita em vários repositórios, o que pode implicar na impossibilidade de fechar e publicar releases (isso também foi escrito nos artigos acima).





Em vez de uma conclusão

Publicar uma biblioteca é difícil, por isso, desejo sinceramente o melhor nessa empreitada. Se houver comentários / acréscimos ou algo que possa ajudar outras pessoas, escreva nos comentários para que eu acrescente uma nota sobre isso ao artigo. Boa sorte.








All Articles