Gradle - Plugin
Il plug-in non è altro che un insieme di attività, quasi tutte le attività utili come la compilazione di attività, l'impostazione di oggetti di dominio, l'impostazione di file sorgente, ecc. Sono gestite dai plug-in. Applicare un plug-in a un progetto significa che consente al plug-in di estendere le capacità del progetto. I plugin possono fare cose come:
- Estendi il modello Gradle di base (es. Aggiungi nuovi elementi DSL che possono essere configurati).
- Configurare il progetto in base alle conversioni (ad esempio, aggiungere nuove attività o configurare valori predefiniti ragionevoli).
- Applicare una configurazione specifica (ad esempio, aggiungere archivi aziendali o applicare standard).
Tipi di plugin
Esistono due tipi di plug-in in Gradle, plug-in di script e plug-in binari. I plugin di script sono uno script di build aggiuntivo che fornisce un approccio dichiarativo alla manipolazione della build. Questo è in genere utilizzato all'interno di una build. I plugin binari sono le classi che implementano l'interfaccia del plugin e adottano un approccio programmatico per manipolare la compilazione. I plugin binari possono risiedere con uno script di compilazione, con la gerarchia del progetto o esternamente in un JAR di plugin.
Applicazione di plugin
Project.apply()Il metodo API viene utilizzato per applicare il particolare plugin. Puoi utilizzare lo stesso plug-in più volte. Esistono due tipi di plug-in uno è il plug-in di script e il secondo è il plug-in binario.
Plugin di script
I plugin di script possono essere applicati da uno script sul file system locale o da una posizione remota. Le posizioni del file system sono relative alla directory del progetto, mentre le posizioni degli script remoti specificano l'URL HTTP. Dai un'occhiata al seguente frammento di codice. Viene utilizzato per applicare ilother.gradleplugin per lo script di compilazione. Usa questo codice inbuild.gradle file.
apply from: 'other.gradle'
Plugin binari
Ogni plug-in è identificato dall'id plug-in in quelli che alcuni plug-in principali utilizzano nomi brevi per applicarlo e alcuni plug-in della community utilizzano un nome completo per l'ID plug-in. Qualche volta permette di specificare la classe del plugin.
Dai un'occhiata al seguente frammento di codice. Mostra come applicare il plugin java usando il suo tipo. Usa questo codice inbuild.gradle file.
apply plugin: JavaPlugin
Dai un'occhiata al seguente codice per applicare il plugin principale usando un nome breve. Usa questo codice inbuild.gradle file.
plugins {
id 'java'
}
Dai un'occhiata al seguente codice per applicare il plugin della community utilizzando un nome breve. Usa questo codice inbuild.gradle file.
plugins {
id "com.jfrog.bintray" version "0.4.1"
}
Scrittura di plugin personalizzati
Durante la creazione di un plug-in personalizzato, è necessario scrivere un'implementazione del plug-in. Gradle crea un'istanza del plug-in e chiama l'istanza del plug-in utilizzando il metodo Plugin.apply (). L'esempio seguente contiene un plug-in di saluto, che aggiunge un'attività hello al progetto. Dai un'occhiata al seguente codice. Usa questo codice inbuild.gradle file.
apply plugin: GreetingPlugin
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
project.task('hello') << {
println "Hello from the GreetingPlugin"
}
}
}
Usa il codice seguente per eseguire lo script precedente.
C:\> gradle -q hello
Produzione:
Hello from the GreetingPlugin
Ottenere input dalla build
La maggior parte dei plugin necessita del supporto di configurazione dallo script di compilazione. Il progetto Gradle ha un oggetto ExtensionContainer associato che aiuta a tenere traccia di tutte le impostazioni e le proprietà passate ai plug-in.
Aggiungiamo un semplice oggetto estensione al progetto. Qui aggiungiamo un oggetto di estensione saluto al progetto, che consente di configurare il saluto. Usa questo codice inbuild.gradle file.
apply plugin: GreetingPlugin
greeting.message = 'Hi from Gradle'
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
// Add the 'greeting' extension object
project.extensions.create("greeting", GreetingPluginExtension)
// Add a task that uses the configuration
project.task('hello') << {
println project.greeting.message
}
}
}
class GreetingPluginExtension {
def String message = 'Hello from GreetingPlugin'
}
Usa il codice seguente per eseguire lo script precedente.
C:\> gradle -q hello
Produzione:
Hi from Gradle
In questo esempio, GreetingPlugin è un semplice vecchio oggetto Groovy con un campo chiamato messaggio. L'oggetto estensione viene aggiunto all'elenco dei plugin con il nome saluto. Questo oggetto diventa quindi disponibile come proprietà del progetto con lo stesso nome dell'oggetto estensione.
Gradle aggiunge una chiusura della configurazione per ogni oggetto di estensione, in modo da poter raggruppare le impostazioni insieme. Dai un'occhiata al seguente codice. Usa questo codice inbuild.gradle file.
apply plugin: GreetingPlugin
greeting {
message = 'Hi'
greeter = 'Gradle'
}
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
project.extensions.create("greeting", GreetingPluginExtension)
project.task('hello') << {
println "${project.greeting.message} from ${project.greeting.greeter}"
}
}
}
class GreetingPluginExtension {
String message
String greeter
}
Usa il codice seguente per eseguire lo script precedente.
C:\> gradle -q hello
Produzione:
Hello from Gradle
Plugin Gradle standard
Ci sono diversi plugin che sono inclusi nella distribuzione Gradle.
Plugin di lingua
Questi plugin aggiungono il supporto per vari linguaggi che possono essere compilati ed eseguiti nella JVM.
ID plug-in | Si applica automaticamente | Descrizione |
---|---|---|
Giava | java-base | Aggiunge funzionalità di compilazione, test e raggruppamento Java a un progetto. Serve come base per molti degli altri plugin Gradle. |
groovy | java, groovy-base | Aggiunge il supporto per la creazione di progetti Groovy. |
scala | java, scala-base | Aggiunge il supporto per la creazione di progetti Scala. |
antlr | Giava | Aggiunge il supporto per la generazione di parser utilizzando Antlr. |
Incubazione dei plugin di lingua
Questi plugin aggiungono il supporto per varie lingue.
ID plug-in | Si applica automaticamente | Descrizione |
---|---|---|
assemblatore | - | Aggiunge funzionalità in linguaggio assembly nativo a un progetto. |
c | - | Aggiunge capacità di compilazione di sorgenti C a un progetto. |
cpp | - | Aggiunge funzionalità di compilazione del codice sorgente C ++ a un progetto. |
obiettivo-c | - | Aggiunge funzionalità di compilazione del codice sorgente Objective-C a un progetto. |
obiettivo-cpp | - | Aggiunge funzionalità di compilazione del codice sorgente Objective-C ++ a un progetto. |
risorse di Windows | - | Aggiunge il supporto per l'inclusione di risorse Windows nei file binari nativi. |