2017-12-18 9 views
1

Ich möchte die Veröffentlichung von Hibernate ORM-Jars zu Bintray untersuchen. Eine Anforderung besteht jedoch darin, Snapshots veröffentlichen zu können, die Bintray jetzt in diesem OJO-Repository unterstützt. Ich bin jedoch ziemlich verwirrt darüber, wie das nach dem Lesen der Dokumentation funktionieren soll.Verwirrt über den Prozess zum Veröffentlichen von Snapshots in BinTray

Zunächst erwähnt die Dokumentation, dass ich in der Lage sein sollte, die Veröffentlichung in JCenter anzufordern und gleichzeitig die Möglichkeit zu verlangen, Snapshots veröffentlichen zu können. Allerdings sehe ich keine solchen Optionen: https://bintray.com/hibernate/artifacts/hibernate-orm

Zweitens, nachdem ich das Konto auf OJO eingerichtet, was, wenn überhaupt, muss ich spezielle mit dem Bintray/Gradle Plugin tun?

+0

FWIW dies eine offene Frage/Problem auf dem bintray gradle Plugin für 6 Monate war: https://github.com/bintray/gradle-bintray-plugin/Probleme/191 –

Antwort

1

Nach vielen Versuchen und Fehlern habe ich mit dem folgenden Setup abgeschlossen.

Wir verwenden 2 verschiedene Plugins für die Veröffentlichung:

  • Schnappschüsse und Release-Publishing (mit com.jfrog.artifactory) und
  • bintray bezogenen Aktivitäten (mit com.jfrog.bintray) in gradle (im Projekt p6spy).

Relevante Teile aus der build.gradle Datei folgen, beachten Sie bitte die Besonderheiten des Projekts:

plugins { 
    ... 
    // to publish !SNAPSHOTs to bintray and sync it to maven-central 
    // ./gradlew bintrayUpload 
    id 'com.jfrog.bintray' version '1.7.3' 
    // to publish SNAPSHOTs and !SNAPSHOTs to oss.jfrog.org 
    // ./gradlew artifactoryPublish 
    id 'com.jfrog.artifactory' version '4.5.2' 
} 

publishing { 
    publications { 
    maven(MavenPublication) { 
     from components.java 
     groupId project.group 
     artifactId project.archivesBaseName 
     version project.version 

     ... 

     pom { 
     packaging 'jar' 
     withXml { 
      asNode().children().last() + { 
      def builder = delegate 

      // maven central publishing mandatories 
      builder.name project.name 
      builder.description description 
      builder.url 'https://github.com/p6spy/p6spy' 

      builder.licenses { 
       builder.license { 
        builder.name 'The Apache Software License, Version 2.0' 
        builder.url 'http://www.apache.org/licenses/LICENSE-2.0.txt' 
        builder.distribution 'repo' 
       } 
      } 
      builder.scm { 
       builder.url 'http://github.com/p6spy/p6spy' 
       builder.connection 'scm:git:git://github.com/p6spy/p6spy.git' 
       builder.developerConnection 'scm:git:ssh://github.com:p6spy/p6spy.git' 
      } 
      builder.developers { 
       builder.developer { 
        builder.name 'Quinton McCombs' 
        builder.email '[email protected]' 
       } 
       builder.developer { 
        builder.name 'Peter Butkovic' 
        builder.email '[email protected]' 
       } 
       builder.developer { 
        builder.name 'Felix Barnsteiner' 
        builder.email '[email protected]' 
       } 
      } 

      // maven central publishing optionals 
      builder.issueManagement { 
       builder.system 'github' 
       builder.url 'https://github.com/p6spy/p6spy/issues' 
      } 
      builder.ciManagement { 
       builder.system 'Travis CI' 
       builder.url 'https://travis-ci.org/p6spy/p6spy' 
      } 
      } 
     } 
     } 
    } 
    } 
} 

// to publish SNAPSHOTs to http://oss.jfrog.org/oss-snapshot-local/ 
// and !SNAPSHOTs to http://oss.jfrog.org/oss-release-local/ 
artifactory { 
    contextUrl = 'https://oss.jfrog.org' 
    resolve { 
     repository { 
      repoKey = 'libs-release' 
     } 
    } 
    publish { 
     repository { 
      // The Artifactory repository key to publish to 
      // when using oss.jfrog.org the credentials are from Bintray. 
      if (project.version.endsWith("-SNAPSHOT")) { 
       repoKey = 'oss-snapshot-local' 
      } else { 
       repoKey = 'oss-release-local' 
      } 

      username = System.getenv('BINTRAY_USER') 
      password = System.getenv('BINTRAY_API_KEY') 
     } 
     defaults { 
      publications 'maven' 
      properties = [ 'bintray.repo': 'p6spy/maven', 'bintray.package': 'p6spy:p6spy', 'bintray.version': project.version.toString() ] 
     } 
    } 
} 

// to publish to bintray and later sync to maven-central 
bintray { 
    user = System.getenv('BINTRAY_USER') 
    key = System.getenv('BINTRAY_API_KEY') 
    publications = ['maven'] 
    // dryRun = true 
    // publish = true 
    pkg { 
    repo = 'maven' 
    name = 'p6spy:p6spy' 
    userOrg = group 
    desc = description 
    websiteUrl = 'https://github.com/p6spy/p6spy' 
    issueTrackerUrl = 'https://github.com/p6spy/p6spy/issues' 
    vcsUrl = 'https://github.com/p6spy/p6spy.git' 
    licenses = ['Apache-2.0'] 
    publicDownloadNumbers = true 
    githubRepo = 'p6spy/p6spy' 
    githubReleaseNotesFile = 'docs/releasenotes.md' 
    version { 
     released = new Date() 
     name = project.version 
     vcsTag = "p6spy-${project.version}" 

     // Optional configuration for Maven Central sync of the version 
     mavenCentralSync { 
      sync = true //[Default: true] Determines whether to sync the version to Maven Central. 
      close = '1' //Optional property. By default the staging repository is closed and artifacts are released to Maven Central. You can optionally turn this behaviour off (by puting 0 as value) and release the version manually. 
      user = System.getenv('SONATYPE_USERNAME') //OSS user token: mandatory 
      password = System.getenv('SONATYPE_PASSWORD') //OSS user password: mandatory 
     } 
    } 
    } 
} 

UPDATE

Veröffentlicht:

+0

Danke Peter! Das ist in der Tat chaotisch und ich fühle mich nicht mehr schlecht wegen meiner Verwirrung :) Ich bin sehr froh, dass jemand das schon herausgefunden hat. –

+0

Wenn es Ihnen nichts ausmacht, würden Sie bereit sein, Ihre Erfahrung mit Bintray zu teilen? Ich bin sehr nervös, dass es ziemlich schwierig scheint, Hilfe zu bekommen. Wir versuchen uns zwischen Bintray und Sonatypes OSSRH zu entscheiden. Ich bevorzuge Bintray sehr, aber diese scheinbare Schwierigkeit, Hilfe zu bekommen, ist ein definitives Anliegen. Vielen Dank! https://hibernate.atlassian.net/browse/HHH-12172 –

+0

nun, um ehrlich zu sein, mein Gedächtnis ist wirklich schlecht und nach der Inspektion der 'travis.yml' vor einer Minute habe ich herausgefunden, dass nur 1 Plugin verwendet wird Zur Veröffentlichung auf oss.jfrog.org macht der andere Aktivitäten im Zusammenhang mit bintray. Entschuldigen Sie das Durcheinander. Ich habe die Antwort aktualisiert. –