2014-09-08 13 views
5

Questa è più una domanda "sto facendo bene".Come utilizzare un repository utente Bintray (correttamente) per una dipendenza da gradle?

Quick back story: ho creato un plug-in gradle (in un progetto standalone gradle/groovy). Lo sto usando in un diverso progetto java. Il progetto client si riferiva ad esso tramite qualcosa come:

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

     classpath name: 'gradle-my-plugin' 
} 

Quindi io non volevo che il riferimento relativo al progetto plug-in (né rendere il plugin da parte del cliente). Ho pensato di vedere se posso metterlo su un BinTray e fare riferimento a un plugin "reale".

Quindi impostare BinTray e dopo molte prove ed errori, ho avuto modo di funzionare, ma non credo di aver corretto. Ecco quello che ho fatto:

  1. Realizzato un repo Maven: MioAsk
  2. Realizzato un pacchetto: Gradle-my-plugin
  3. fatto una versione: 0.1
  4. caricato un file per quella versione, ma specificato un percorso di destinazione come "org/Fhw/Gradle-my-plugin/0.1"
blocco

mio buildscript si presenta così:

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

Quindi quello che mi interessa è l'hack che ho fatto con l'obiettivo su BinTray. W/O questo, il percorso corretto non era a posto per file/jar caricati (per una versione).

Quindi questo è un processo corretto per le dipendenze BinTray e Gradle?

+1

finora così bene. Ma puoi facilitare il processo usando il plugin gradle bintray per caricare il tuo plugin su bintray. Usando il plugin, non avrai bisogno di creare manualmente percorsi, ecc. –

+0

Sì, ho familiarità con il/i plugin/i; ma non li ho ancora provati.Inoltre ho familiarità con alcune chiacchiere che forse uno dei plugin è superfluo (https://github.com/davidmc24/gradle-bintray-plugin) e che vanilla gradle può (con mavenPublisher, forse) pubblicare su BinTray. L'altro plug-in (https://github.com/bintray/gradle-bintray-plugin) è ciò che stai suggerendo? Quindi sono un utente nexus e ho trovato imbarazzante dover specificare il percorso con il mio 'id di gruppo'; mentre il nexus sembra nasconderlo. Questo mi fa pensare che sto sbagliando BinTray. – fwelland

risposta

5

Quello che hai fatto è OK, anche se l'utilizzo di the official Bintray plugin potrebbe semplificarti la vita. Sta migliorando di giorno in giorno, aggiungendo funzionalità e facendo sempre più lavoro per te (ad es. Può creare pigramente un pacchetto e una versione per te se non esistono).

Un'altra cosa da considerare è includere il pacchetto a jcenter. Uno dei vantaggi di questa inclusione sarà a free account in oss.jfrog.org for your development process. È un account Artifactory gratuito (like nexus, but so much better).

Si prega di notare che è possibile includere il plug-in Gradle plugins portal. Una volta fatto questo, l'uso del plugin è verso il basso per

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

Here are the inclusion instructions.

P.S. Per quanto riguarda l'id del gruppo che nexus "nasconde", Bintray non è limitato al layout delle risorse Maven, è possibile distribuire i file in qualsiasi layout necessario, ecco perché è necessario fornire il percorso quando si caricano i file tramite l'interfaccia utente. Dicendo che, quando Bintray incontra un file pom tra i file caricati, imposta automaticamente il percorso. Il percorso è facoltativo anche quando si utilizza maven o maven-publish con il plug-in Bintray: calcola il percorso dagli artefatti una volta che è chiaro che si tratta di file Maven.

+1

Quindi la mia più grande preoccupazione era il fatto che volevo che i miei file build "client" avessero normali contenuti gradle addizionali. Sto bene con futzing sul passaggio di pubblicazione per farlo funzionare 'naturalmente'. Detto questo, ho intenzione di scavare nel plugin; ora che so come funziona il processo di base manualmente. Oh d'accordo su nexus v. Artifactory; Trovo che quest'ultimo sia molto più facile da lavorare. (Oh e ho intenzione di farlo da jcenter - quando matura un po 'di più). GRAZIE PER IL TUO FEED BACK. – fwelland

+0

Siete invitati a chiedere l'inclusione anche per pacchetti non maturi (o pacchetti senza versioni). Vogliamo aiutarti a svilupparlo e darti oss.jfrog.org per questo scopo, ma solo quando sei incluso in jcenter. – JBaruch

Problemi correlati