Kitaplığınızı yükleyin

Kitaplığınıza erişim izni vermek için bir depo seçmeniz gerekir. Bu sayfada, depo türü seçmeyle ilgili göz önünde bulundurulması gereken noktalar ve Maven Publish Eklentisi ile nasıl yayın oluşturulacağı gösterilmektedir.

Kitaplığınızı yüklemeden önce kitaplığınızı yayına hazırladığınızdan ve gerekli tüm yayın varyantlarını veya test ekipmanlarını yapılandırdığınızdan emin olun.

Depo türü seçin

Kitaplıklar AAR dosyaları olarak yayınlanır. Bu dosyalarda bayt kodu olarak derlenmiş kodlar, yerel kitaplıklar, bir Android manifesti ve kaynaklar bulunur. Paketin kendisi diğer kitaplıklarda herhangi bir kimlik, sürüm veya bağımlılık tanımlamaz.

AAR'lerin bir depo aracılığıyla sağlanması, genellikle AAR'nin doğrudan dağıtımı yerine en iyi uygulamadır. Bu, kullanıcıların sürüm gibi önemli ayrıntılar içermeyen bir name.aar dosyasıyla uğraşmak yerine, kitaplığın nereden geldiğini daha iyi anlamalarına yardımcı olur. Bir kitaplığın yeni sürümüne geçerken yalnızca yeni sürümün gerekli bağımlılıklarının eklendiğinden emin olmak için bir depo kullanın. Böylece, kullanıcıların bağımlılıkları manuel olarak güncellemesi gerekmez.

Kitaplığınızı yayınlamak için bir depo kullanmanın çeşitli yararları vardır:

  • Gradle, kitaplığınızın bağımlılıklarını bağımlılık grafiğine otomatik olarak ekleyebilir.
  • Gradle, bağımlılık grafiğinde kitaplığınızın tek bir sürümünün olmasını sağlayarak kitaplığınız farklı sürümlerde geçişli olarak birden fazla kez dahil edilirse çakışmaları çözebilir.
  • Kitaplığınız Java 8 veya üzeri dil özellikleri kullanıyorsa Android Gradle Eklentisi (AGP), daha etkili bir şekilde şeker giderme işlemi yapabilir. Bu da kullanıcılarınız için derleme sürelerini kısaltır.
  • Kitaplığınız varyant yayınlama özelliğini kullanabilir ve test donanımları gibi özellikler içerebilir.

AAR'nin doğrudan dağıtılması, kullanıcılarınıza kitaplığınızın kimliği, sürümü veya bağımlılıklarıyla ilgili herhangi bir bilgi sağlamaz. Bir depoya yayınlarken, dağıtım, depo mekanizmasının parçası olan ayrı bir dosya tarafından gerçekleştirilir. Bu, Maven depoları için POM dosyasıdır. Bu nedenle, AAR dosyalarını manuel olarak dağıtmak yerine kitaplıkları kullanarak kitaplıkların yayınlanması önemle tavsiye edilir.

Depo türleri

Üç tür depo vardır:

  • Maven Central gibi ücretsiz online depolar sayesinde herkes kitaplık yükleyip indirebilir.
  • Giriş yaparak erişilebilen özel depolar, özel kitaplıkların kontrollü dağıtımına olanak tanır.
  • Klasör tabanlı yerel depolar, kitaplıkların manuel indirme yoluyla dağıtımına olanak tanır.

Yerel, klasör tabanlı depolar kullanmak, kullanıcılarınıza AAR'nin manuel indirme bağlantısını sağlamaya veya AAR'yi e-posta ile göndermeye çok benzer. Aradaki temel fark, yalnızca AAR'yi değil, aynı zamanda kimlik, sürüm ve bağımlılıklar hakkında ek bilgiler göndermenizdir.

AAR'nizi ve meta verileri içeren klasör tabanlı deponun bir zip dosyasını dağıtırsınız. Daha sonra kullanıcılarınız dosyanın içeriğini çıkarıp projelerine ekleyebilir ve Gradle'ı dosyaya işaret edebilir. O andan itibaren kullanıcılar, sanki kitaplık online bir depodaymış gibi Maven koordinatlarını kullanarak kitaplığa olan bağımlılıklarını beyan edebilir ve daha önce bahsedilen tüm avantajlardan yararlanabilir.

Yayını oluşturma

Gradle Maven Publish Eklentisi'ni kullanarak yayınlayın. Maven Publish Eklentisi, yayınları ve depoları bildirmenize olanak tanır ve bu yayınları depolarda yayınlamak için görevler oluşturur. Bu yayınlar, derlemeyi yönlendiren eklentinin oluşturduğu bir SoftwareComponent örneğini (AGP veya java-library eklentisi olabilir) kullanır.

Maven Publish Eklentisini AGP ile çalıştırırken, yazılım bileşenlerinin eklenti uygulandığında doğrudan oluşturulmadığını unutmayın. Bunun yerine, afterEvaluate() geri çağırma adımı sırasında oluşturulur. Bu nedenle, yazılım bileşenini seçen yayın da afterEvaluate() adımı sırasında yapılandırılmalıdır.

Modül düzeyindeki build.gradle dosyasının aşağıdaki kod snippet'i, singleVariant() veya multipleVariants() ile oluşturulmuş belirli bir varyant için yayın oluşturur:

Modern

publishing {
  publications {
    release(MavenPublication) {
      groupId = 'com.my-company'
      artifactId = 'my-library'
      version = '1.0'

      afterEvaluate {
        from components.release
      }
    }
  }
}

Kotlin

publishing {
  publications {
    register<MavenPublication>("release") {
      groupId = "com.my-company"
      artifactId = "my-library"
      version = "1.0"

      afterEvaluate {
        from(components["release"])
      }
    }
  }
}

Yukarıdaki örnekte bileşenin adı (components.release), singleVariant() veya multipleVariants() öğesine verilen ada dayanır.

Bir yayını bildirdikten sonra hedef depo oluşturmanız gerekir.

Yerel depoda yayınla

Yerel depoda yayınlama, depo bildirimi dışında uzak depoya yayınlamaya çok benzer. İstenen varyantı veya varyantları yayınlayan bir yayın oluşturmak amacıyla uzak bir depoda nasıl yayınlayacağınızı öğrenmek için önceki bölümü okuyun. Ardından yerel bir depo oluşturun:

Modern

publishing {
  publications {
    release(MavenPublication) {
      ...
    }
  }
  repositories {
    maven {
      name = 'myrepo'
      url = "${project.buildDir}/repo"
    }
  }
}

Kotlin

publishing {
  publications {
    register<MavenPublication>("release") {
      ...
    }
  }
  repositories {
    maven {
      name = "myrepo"
      url = uri("${project.buildDir}/repo")
    }
  }
}

Bu işlemle, yayının ve deponun adından oluşan publishReleaseToMyRepoRepository adlı bir görev oluşturulur. Belirtilen konumda depo oluşturmak için bu görevi çalıştırın. Bu örnekte, depo, projenin derleme klasöründeki bir repo dizini altında oluşturulur.

Deponun zip dosyasını otomatik olarak oluşturmak istiyorsanız bunu aşağıdaki kodu kullanarak yapın:

Modern

tasks.register('generateRepo', Zip) {
  def publishTask = tasks.named('publishReleasePublicationToMyrepoRepository')
  from publishTask.map { it.getRepository().getUrl() }
  into 'mylibrary'
  archiveFileName.set('mylibrary.zip')
}

Kotlin

tasks.register<Zip>("generateRepo") {
  val publishTask = tasks.named(
    "publishReleasePublicationToMyrepoRepository",
    PublishToMavenRepository::class.java)
  from(publishTask.map { it.repository.url })
  into("mylibrary")
  archiveFileName.set("mylibrary.zip")
}

Bu kod, yayınlama görevinin içeriğini kullanan ve bu görevi sıkıştıran ve ZIP girişlerinin mylibrary adlı üst düzey klasörde yer almasını sağlayan generateRepo adlı bir Zip görevi oluşturur. Çıkış build/distributions bölümünün altındadır.