Gradle - wtyczki
Wtyczka to nic innego jak zestaw zadań, prawie wszystkie przydatne zadania, takie jak kompilowanie zadań, ustawianie obiektów domeny, konfigurowanie plików źródłowych itp., Są obsługiwane przez wtyczki. Zastosowanie wtyczki do projektu oznacza, że wtyczka rozszerza możliwości projektu. Wtyczki mogą wykonywać takie czynności, jak -
- Rozszerz podstawowy model Gradle (np. Dodaj nowe elementy DSL, które można skonfigurować).
- Skonfiguruj projekt zgodnie z konwersjami (np. Dodaj nowe zadania lub skonfiguruj rozsądne ustawienia domyślne).
- Zastosuj określoną konfigurację (np. Dodaj repozytoria organizacyjne lub egzekwuj standardy).
Rodzaje wtyczek
W Gradle są dwa rodzaje wtyczek: wtyczki skryptowe i wtyczki binarne. Wtyczki skryptów to dodatkowy skrypt kompilacji, który zapewnia deklaratywne podejście do manipulowania kompilacją. Jest to zwykle używane w kompilacji. Wtyczki binarne to klasy, które implementują interfejs wtyczki i przyjmują programistyczne podejście do manipulowania kompilacją. Wtyczki binarne mogą znajdować się w skrypcie kompilacji, w hierarchii projektu lub zewnętrznie w pliku JAR wtyczki.
Stosowanie wtyczek
Project.apply()Metoda API służy do zastosowania konkretnej wtyczki. Możesz używać tej samej wtyczki wiele razy. Istnieją dwa typy wtyczek, jedna to wtyczka skryptowa, a druga to wtyczka binarna.
Wtyczki skryptowe
Wtyczki skryptów można zastosować ze skryptu w lokalnym systemie plików lub w zdalnej lokalizacji. Lokalizacje systemu plików są względne w stosunku do katalogu projektu, podczas gdy zdalne lokalizacje skryptów określają adres URL HTTP. Spójrz na następujący fragment kodu. Służy do stosowaniaother.gradleplugin do skryptu budowania. Użyj tego kodu wbuild.gradle plik.
apply from: 'other.gradle'
Wtyczki binarne
Każda wtyczka jest identyfikowana przez identyfikator wtyczki, ponieważ niektóre wtyczki podstawowe używają krótkich nazw, aby ją zastosować, a niektóre wtyczki społeczności używają w pełni kwalifikowanej nazwy dla identyfikatora wtyczki. Czasami pozwala określić klasę wtyczki.
Spójrz na następujący fragment kodu. Pokazuje, jak zastosować wtyczkę java, używając jej typu. Użyj tego kodu wbuild.gradle plik.
apply plugin: JavaPlugin
Spójrz na poniższy kod, aby zastosować wtyczkę core przy użyciu krótkiej nazwy. Użyj tego kodu wbuild.gradle plik.
plugins {
id 'java'
}
Zapoznaj się z poniższym kodem, aby zastosować wtyczkę społeczności przy użyciu krótkiej nazwy. Użyj tego kodu wbuild.gradle plik.
plugins {
id "com.jfrog.bintray" version "0.4.1"
}
Pisanie niestandardowych wtyczek
Tworząc niestandardową wtyczkę, musisz napisać implementację wtyczki. Gradle tworzy instancję wtyczki i wywołuje instancję wtyczki za pomocą metody Plugin.apply (). Poniższy przykład zawiera wtyczkę powitania, która dodaje zadanie Hello do projektu. Spójrz na poniższy kod. Użyj tego kodu wbuild.gradle plik.
apply plugin: GreetingPlugin
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
project.task('hello') << {
println "Hello from the GreetingPlugin"
}
}
}
Użyj poniższego kodu, aby wykonać powyższy skrypt.
C:\> gradle -q hello
Wynik:
Hello from the GreetingPlugin
Pobieranie danych wejściowych z kompilacji
Większość wtyczek wymaga obsługi konfiguracji ze skryptu kompilacji. Projekt Gradle ma skojarzony obiekt ExtensionContainer, który pomaga śledzić wszystkie ustawienia i właściwości przekazywane do wtyczek.
Dodajmy do projektu prosty obiekt rozszerzenia. Tutaj dodajemy do projektu obiekt rozszerzenia powitania, który umożliwia skonfigurowanie powitania. Użyj tego kodu wbuild.gradle plik.
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'
}
Użyj poniższego kodu, aby wykonać powyższy skrypt.
C:\> gradle -q hello
Wynik:
Hi from Gradle
W tym przykładzie GreetingPlugin to zwykły stary obiekt Groovy z polem o nazwie message. Obiekt rozszerzenia zostanie dodany do listy wtyczek z nazwą pozdrowienia. Ten obiekt staje się następnie dostępny jako właściwość projektu o tej samej nazwie, co obiekt rozszerzenia.
Gradle dodaje zamknięcie konfiguracji dla każdego obiektu rozszerzenia, dzięki czemu można grupować ustawienia. Spójrz na poniższy kod. Użyj tego kodu wbuild.gradle plik.
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
}
Użyj poniższego kodu, aby wykonać powyższy skrypt.
C:\> gradle -q hello
Wynik:
Hello from Gradle
Standardowe wtyczki Gradle
Istnieją różne wtyczki, które są zawarte w dystrybucji Gradle.
Wtyczki językowe
Te wtyczki dodają obsługę różnych języków, które mogą być kompilowane i wykonywane w JVM.
ID wtyczki | Obowiązuje automatycznie | Opis |
---|---|---|
Jawa | java-base | Dodaje do projektu funkcje kompilacji, testowania i tworzenia pakietów Java. Służy jako podstawa dla wielu innych wtyczek Gradle. |
groovy | java, groovy-base | Dodaje obsługę tworzenia projektów Groovy. |
scala | java, scala-base | Dodaje obsługę tworzenia projektów Scala. |
antlr | Jawa | Dodaje obsługę generowania parserów przy użyciu Antlr. |
Inkubowanie wtyczek językowych
Te wtyczki dodają obsługę różnych języków.
ID wtyczki | Obowiązuje automatycznie | Opis |
---|---|---|
monter | - | Dodaje natywny język asemblera do projektu. |
do | - | Dodaje możliwości kompilacji źródła C do projektu. |
cpp | - | Dodaje funkcje kompilacji źródła C ++ do projektu. |
cel C | - | Dodaje funkcje kompilacji źródła Objective-C do projektu. |
objective-cpp | - | Dodaje funkcje kompilacji źródła C ++ do projektu do projektu. |
zasoby systemu Windows | - | Dodaje obsługę dołączania zasobów systemu Windows do natywnych plików binarnych. |