2014-09-08 13 views
5

Dies ist eher eine Frage "mache ich es richtig".Wie benutze ich ein Bintray Benutzer Repo (richtig) für eine Abhängigkeit von Gradle?

Quick Back Geschichte: Ich habe ein Gradle-Plugin (in einem eigenständigen Gradle/Groovy-Projekt) gebaut. Ich verwende es in einem anderen Java-Projekt. Der Client-Projekt bezog sich auf sie über so etwas wie:

buildScript 
{ 
     flatDir { 
      dirs '../my-gradle-plugin/build/libs' 
     } 

     classpath name: 'gradle-my-plugin' 
} 

So habe ich nicht die relative Bezugnahme auf das Plugin-Projekt wollen (noch Teil des Clients machen Plugin). Ich dachte, ich würde sehen, ob ich es in einem BinTray aufstellen und wie ein "echtes" Plugin bezeichnen kann.

Also richten Sie BinTray und nach viel Versuch und Irrtum, ich habe es zur Arbeit, aber ich glaube nicht, dass ich richtig gemacht habe. Hier ist, was ich getan habe:

  1. Hergestellt ein Maven Repo: MyStuff
  2. Hergestellt ein Paket: gradle-my-Plugin
  3. Hergestellt eine Version: 0.1
  4. hochgeladen eine Datei für diese Version, aber angegeben ein Zielpfad wie "org/fhw/gradle-my-Plugin/0,1"

Mein buildScript Block sieht wie folgt aus:

buildScript { 
    repositories { 
     maven { 
      url 'http://dl.bintray.com/my-bintray-id/MyStuff 
     } 
    }  
    dependencies { 
     classpath 'org.fhw:gradle-my-plugin:0.1' 
    } 
} 

Was mich interessiert, ist der Hack, den ich mit dem Ziel auf BinTray gemacht habe. W/O dies war der richtige Pfad nicht für hochgeladene Dateien/Gläser (für eine Version).

Also ist dies ein richtiger Prozess für BinTray und Gradle Abhängigkeiten?

+1

so weit so in Ordnung. Aber Sie können den Prozess erleichtern, indem Sie das Gray-Bintray-Plugin zum Hochladen Ihres Plugins in bintray verwenden. Mit dem Plugin müssen Sie keine Pfade etc. manuell erstellen. –

+0

Ja, ich kenne die Plugins; aber habe sie noch nicht ausprobiert.Ich bin auch mit etwas Gerede vertraut, dass vielleicht eines der Plugins überflüssig ist (https://github.com/davidmc24/gradle-bintray-plugin) und dass Vanille-Grapple (mit mavenPublisher, vielleicht) in BinTray veröffentlichen kann. Das andere Plugin (https://github.com/bintray/gradle-bintray-plugin) ist das, was Sie vorschlagen? Also bin ich ein Nexus-Benutzer und fand es schwierig, den Pfad mit meiner 'Gruppen-ID' angeben zu müssen; während Nexus dies zu verbergen scheint. Das lässt mich glauben, dass ich BinTray falsch mache. – fwelland

Antwort

5

Was Sie getan haben, ist in Ordnung, obwohl die Verwendung the official Bintray plugin Ihr Leben viel einfacher machen könnte. Es wird von Tag zu Tag besser, Funktionen hinzufügen und immer mehr Arbeit für Sie tun (z. B. kann es ein Paket und eine Version für Sie erstellen, wenn sie nicht existieren).

Eine weitere zu berücksichtigende Sache ist, Ihr Paket zu jcenter einzuschließen. Einer der Vorteile dieser Aufnahme wird a free account in oss.jfrog.org for your development process sein. Es ist ein kostenloses Artifactory-Konto (like nexus, but so much better).

Bitte beachten Sie auch, dass Sie Ihr Plugin die Gradle plugins portal einschließen können. Sobald Sie das tun, besteht in der Verwendung von Plugin herunter zu

plugins { 
    id "org.fhw.gradle-my-plugin" version "0.1" 
} 

Here are the inclusion instructions.

P.S. In Bezug auf die Gruppen-ID, die Nexus "versteckt" - Bintray ist nicht auf Maven-Artefakte Layout beschränkt, können Sie Dateien in jedem Layout, das Sie benötigen, bereitstellen, deshalb müssen Sie den Pfad beim Hochladen von Dateien über die Benutzeroberfläche bereitstellen. Wenn Bintray unter den hochgeladenen Dateien auf eine Pom-Datei stößt, wird der Pfad automatisch eingerichtet. Der Pfad ist auch optional bei Verwendung maven oder maven-publish mit dem Bintray-Plugin - es berechnet den Pfad von Artefakten, sobald es klar ist, dass diese Maven-Dateien sind.

+1

Also war meine größte Sorge, dass ich wollte, dass meine Client-Build-Dateien normale Gradle-Deps-Sachen haben. Ich bin damit einverstanden, auf den Veröffentlichungsschritt zu verzichten, damit es "natürlich" funktioniert. Nachdem ich das gesagt habe, plane ich, mich in das Plugin zu vertiefen; Jetzt weiß ich, wie der grundlegende Prozess manuell funktioniert. Oh, stimmte Nexus v. Artefaktory zu; Ich finde, dass Letzteres viel einfacher zu bearbeiten ist. (Oh, und ich plane es zu zentrieren - wenn es ein bisschen reifer wird). VIELEN DANK FÜR IHR FEEDBACK. – fwelland

+0

Sie können gerne für die Aufnahme auch für nicht ausgereiftes Paket (oder Paket ohne Versionen) fragen. Wir möchten Ihnen bei der Entwicklung helfen und geben Ihnen den oss.jfrog.org zu diesem Zweck, aber nur, wenn Sie in jcenter enthalten sind. – JBaruch