2015-01-03 29 views
7

Ecco build.gradle fascicolo di mio progetto dummy:Publishing Gradle istantanee localmente

apply plugin: 'groovy' 

repositories { 
    mavenLocal() 
    mavenCentral() 
} 

dependencies { 
    compile 'org.codehaus.groovy:groovy-all:2.3.3' 
    compile 'org.slf4j:jcl-over-slf4j:1.7.7' 

    testCompile 'junit:junit:4.11' 
    testCompile 'org.mockito:mockito-all:1.10.8' 
} 

task sourcesJar(type: Jar, dependsOn: classes) { 
    classifier = 'sources' 
    from sourceSets.main.allSource 
} 

artifacts { 
    archives sourcesJar 
} 

task wrapper(type: Wrapper) { 
    gradleVersion = '1.11' 
} 

Quando eseguo gradle clean build -Pversion=1.2.3, questi pacchetti tutto il mio codice e crea un build/libs/dummy-1.2.3.jar per me.

Vorrei conoscere l'assoluto minimo indispensabile quantità di codice necessaria Gradle modo che ho potuto pubblicare le mie JAR "fittizi" al mio cache locale Maven (mavenLocal()). Inoltre, come funziona con il controllo delle versioni? I potrebbe specificare sempre una versione concreta per il JAR fittizio, ma quando sto pubblicando localmente, ha più senso (per me, almeno) pubblicare versioni SNAPSHOT. I potrebbe eseguire solo gradle clean build -Pversion=0.1.SNAPSHOT, ma la mia preoccupazione è se altri progetti locali potrebbero raccogliere le ultime versioni SNAPSHOT.

Così ancora una volta:

  1. Qual è il codice minimo di pubblicare dummy a livello locale?
  2. In qualsiasi modo, quando si pubblica localmente, per specificare una versione SNAPSHOT che altri progetti raccolgono sempre la copia più recente di?
  3. Quali altri progetti locali devono utilizzare per raccogliere questo SNAPSHOT? Qualcosa come compile ':dummy:LATEST'?
+1

La domanda che hai chiesto è stata esaudita? Se è così accetta la risposta per favore. – Opal

risposta

1

1) Hai solo bisogno di fare un

gradle install 

2) Specificare qualsiasi versione che ti piace - una versione SNAPSHOT ha senso per lo sviluppo attivo. Una volta che pensi che la tua libreria abbia meno probabilità di cambiare, dovresti assolutamente optare per una versione non istantanea.

3) È necessario specificare una dipendenza dalla versione presente nel repository locale, proprio come per le librerie di terze parti.

+1

Quale plugin è necessario per farlo? Ottengo questo quando provo: '' ' Attività 'installazione' non trovata nel progetto radice 'kotti'. '' ' – Adeynack

7

Here Ho preparato un progetto di esempio per te, questo è il minimo indispensabile quando si tratta della configurazione build.gradle.

  1. è necessario aggiungere apply plugin: 'maven' e impostare group = 'somegroup'. Il plugin maven fornisce l'attività install e group è necessario per installare artefatto nel repository di Maven.

    Quindi eseguire gradle clean install. Se nessuna versione è passata, verrà valutata non specificata, se non è stata configurata la artifactId verrà valutata su project.name. Here Puoi trovare come configurare altre proprietà di prova.

    L'installazione di uno snapshot per lo sviluppo locale è sicuramente una buona idea.

  2. Se desideri che l'altro progetto scelga sempre l'ultima versione di SNAPSHOT È necessario aggiungere la seguente parte di codice agli script build.gradle. Garantisce la risoluzione alla versione più recente.

    configurations.all { 
        resolutionStrategy { 
        cacheChangingModulesFor 0, 'seconds' 
        } 
    } 
    
  3. Prima di tutto è necessario aggiungere snapshot repo a repositories blocco (solo un esempio) - con repo Maven locali, non è necessario questo passaggio:

    maven { 
        url 'https://oss.sonatype.org/content/repositories/snapshots' 
    } 
    

    dipendenza deve essere specificato come:

    group:artifact:0.+ 
    

Sentiti libero di chiedere in caso di domande.