De JCenter a Maven o un breve post sobre la publicación multiplataforma de Kotlin

Recientemente, hubo noticias de que JCenter pronto se cerrará y cómo podemos seguir viviendo allí, no se dice que tengamos que mudarnos a otro lugar. Para mí personalmente MavenCentral se ha convertido en el principal candidato, ya que llevo mucho tiempo publicando allí, aunque desde el último año me acostumbré a hacerlo a través de Bintray. En esta publicación, habrá una breve información sobre los submarinos que conocí y cómo tuve que cambiar mis guiones de publicación.





ESTE ARTÍCULO NO TIENE NINGUNA INFORMACIÓN SOBRE LA PUBLICACIÓN DE OBJETIVOS NATIVOS . Sin embargo, espero que la información del artículo te sea de utilidad.





Probablemente ya escribió

De hecho, hay varios artículos sobre este tema ( 2019 y 2021 ), pero por el momento no he visto un solo artículo completo con información sobre la publicación de scripts (probablemente, solo busqué en el lugar equivocado). Utilizado en la mayor parte de la información se puede tomar de un artículo (registro Sonatype, registro de dominio, creación de clave GPG y su propósito y no solo). El siguiente es un script universal para publicar un proyecto 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
}

      
      



Puede ver un ejemplo de este script aquí . Mientras me mudaba de JCenter, encontré los siguientes errores:





  • 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



aquí se usa por la razón de que si usa la construcción paralela del proyecto (bandera --parallel



o org.gradle.parallel=true



en gradle.properties



), entonces sin la bandera de deshabilitar la construcción paralela, la publicación se realizará en varios repositorios, lo que puede implicar la imposibilidad de cerrar y publicar versiones (esto también se escribió en los artículos anteriores).





En lugar de una conclusión

Publicar una biblioteca es difícil, por eso le deseo sinceramente lo mejor en este esfuerzo. Si hay comentarios / adiciones o algo más que pueda ayudar a otros, escriba los comentarios para que agregue una nota sobre esto al artículo. Buena suerte.








All Articles