2012-03-13 21 views
14

Desidero aggiungere alcune funzionalità di eliminazione extra all'attività pulita (per le build Java).Gradle - Elimina non funzionante

Così provo ad aggiungere quanto segue al mio script gradle build.

clean.doLast{ 
    delete ('test.txt') 
} 

Quando ho TUN il compito "pulito" il mio file di esempio non viene cancellato ... Ho anche non si ottiene alcun messaggio di errore indicato quello che è successo.

Se provo il seguente:

task deleteStuff(type: Delete) { 
    delete 'test.txt' 
} 

cose funzionano.

Impossibile aggiungere (tramite doLast) la funzionalità di eliminazione alle attività? Qual è il modo corretto di farlo (senza hacking nelle attività di Ant).

risposta

15

In questi due frammenti di codice, non si sta chiamando Project.delete() ma Delete.delete(). In altre parole, si sta configurando l'attività Delete. L'operazione eseguita dopo l'esecuzione dell'operazione Delete (come nel primo frammento) è troppo tardi.

Nel caso di un'attività Delete, non vi è alcun motivo valido per aggiungere un'operazione delete con doLast. Il tuo secondo frammento è chiaramente preferibile. Per altre attività, l'approccio doLast funzionerà perché non hanno un metodo delete. Oppure puoi disambiguare con project.delete().

+0

Peter, grazie per aver menzionato project.delete to disambiguate. Ciò ha chiarito molto della mia confusione. –

1

Se il motivo è di evitare di passare il tempo nella fase di preparazione (che viene eseguita per ogni attività), è possibile utilizzare doFirst per impostare l'attività Elimina. Quindi usare clean.doFirst invece di clean.doLast nell'esempio sopra funzionerà.