gradle vs maven maven plugins
W tym samouczku omówimy różnice między Gradle a Maven. Dowiesz się również o różnych wtyczkach i konfiguracjach Maven:
Podobnie jak Maven, Gradle jest narzędziem do automatyzacji używanym przez programistów Java do kompilacji. Gradle to narzędzie typu open source, które wykorzystuje język specyficzny dla domeny i jest rozwijane w Groovy.
=> Sprawdź idealny przewodnik szkoleniowy Maven tutaj.
Czego się nauczysz:
Gradle Vs Maven
Kluczowe różnice między Gradle i Maven przedstawiono w tabeli poniżej:
Gradle | Maven |
---|---|
Pod względem wydajności Gradle jest lepszy, ponieważ zajmuje się tylko bieżącym uruchomionym zadaniem, a nie dostarczanymi danymi wejściowymi lub wyjściowymi. | Maven nie używa poprzednich artefaktów kompilacji ani pamięci podręcznej do tworzenia projektu, więc czas wymagany do wygenerowania nowego projektu jest dłuższy. |
Jest to system automatyzacji opracowany w Groovy | Jest to narzędzie do kompilacji i zarządzania projektami. |
Gradle nie jest sterowany przez żaden plik xml dla kompilacji projektu, zamiast tego używa języka - Groovy, który jest specyficzny dla domeny. Informacje o projekcie są przechowywane w narzędziu Gradle. | Maven jest obsługiwany przez plik xml, który zawiera informacje o zależnościach, wtyczkach, profilach i tak dalej. |
Gradle działa przyrostowo i zapewnia szybsze ukończenie kompilacji. | Maven nie stosuje podejścia przyrostowego i jest wolniejszy pod względem czasu kompilacji niż Gradle. |
Skrypt Gradle jest prosty, nie jest długi i można go łatwo zrozumieć. | Maven ma plik xml, który jest opisowy, obszerny i trudny do zrozumienia. |
Gradle można łatwo dostosować, ponieważ ma wiele elastyczności pod względem dużej liczby opcji dostępnych w narzędziu z obsługą IDE. | Dostosowywanie Mavena nie jest łatwe i czasami niemożliwe, ponieważ nie obsługuje on IDE. |
Celem narzędzia Gradle jest zapewnienie nowych funkcji w projekcie. | Celem narzędzia Maven jest zakończenie projektu w określonym czasie. |
W Gradle kompilacja języka Java nie jest wymaganym krokiem. | W Maven kompilacja jest krokiem wymaganym. |
Gradle to stosunkowo nowoczesne narzędzie, którego liczba użytkowników jest ograniczona. | Maven to znane narzędzie i popularne wśród programistów Java. |
Liczne zależności dla projektu można dodać w Gradle bez użycia XML. | Do projektu można dodać wiele zależności, dodając je do pliku xml (pom), co czyni go bardziej złożonym i trudniejszym w zarządzaniu niż Gradle. |
Plik Build.gradle zawiera elementy takie jak grupa, nazwa_bazowa i wersja. | Plik Pom.xml zawiera elementy takie jak i. |
Kilka więcej różnic między Maven a Gradle
Gradle składa się z grupy zadań, które należy wykonać. Podczas gdy Maven ma stały i precyzyjny model faz. Cele Maven są powiązane z fazami projektu, a każdy cel jest podobny do zadań Gradle.
Wydajność
Jeśli chodzi o wydajność, zarówno Gradle, jak i Maven mogą równolegle uruchamiać więcej niż jedną kompilację na różnych modułach.
Jednak Gradle stosuje podejście do kompilacji przyrostowej i sprawdza, czy zadania są modyfikowane, czy nie, i zajmuje się tylko aktualizowanymi plikami.
Gradle ma lepszą wydajność dzięki funkcjom wymienionym poniżej:
- Kompilacja klas Java w sposób przyrostowy.
- Ponowne użycie artefaktów kompilacji innych kompilacji Gradle z podobnymi danymi wejściowymi.
- Większe wykorzystanie interfejsów API.
- Szybsza kompilacja z pomocą demona kompilatora.
Tworzenie zarządzania pamięcią podręczną sprawia, że Gradle jest znacznie szybszy niż Maven.
Elastyczność
Gradle jest używane przez Google jako narzędzie do kompilacji systemu Android, ponieważ zostało zaprojektowane w taki sposób, że można je rozszerzyć za pomocą najbardziej podstawowych metodologii. Model Gradle można wykorzystać do tworzenia C lub C ++ i można go rozszerzyć na dowolne inne środowisko.
Mavena nie można łatwo dostosować i często nie jest to wykonalne. Ułatwia to zrozumienie kompilacji Mavena, jeśli nie mamy do czynienia z żadnymi złożonymi lub wyłącznymi wymaganiami. Jednak Gradle można łatwo dostosować do użytku.
Gradle udostępnia interesujący interaktywny interfejs sieciowy do kodowania, debugowania i zadań optymalizacji kompilacji w funkcji Build Scan. Zawiera ważne informacje o trendach, historii i innych parametrach kompilacji.
Zarządzanie zależnościami
Gradle ma lepsze interfejsy API i implementację zależności niż Maven. Poza tym pozwala na przypadkowe skrytki. Oznacza to, że wiele projektów może korzystać ze wspólnej pamięci podręcznej bez wzajemnego nadpisywania. Gradle ma sumę kontrolną i synchronizuje pamięci podręczne wraz z repozytoriami.
Ma niektóre cechy zarządzania zależnościami, takie jak:
- Reguły zastępowania dla kompatybilnych bibliotek.
- Zastąpione według zasad.
- Przywróć zależności projektu z zewnętrznymi i odwrotnie.
Zarówno Gradle, jak i Maven mają zależności dynamiczne i przechodnie. Maven ma repozytoria lokalne, centralne i zdalne, podczas gdy Gradle ma JCenter. Istnieją również dostosowane repozytoria wewnętrzne organizacji.
Kodowanie przykładów Gradle i Maven
2.0.0 com.softwareTest Java-builds jar 2.0 j unit junit 2.10 org.apache.maven.plugins maven-surefire-plugin 2.2.1
Aby wykonać cel Maven, który generuje plik jar, używane jest następujące polecenie Maven:
sql queries rozmowy kwalifikacyjne i odpowiedzi na 3 lata doświadczenia
mvn package
W ten sposób widzimy, że plik pom.xml jest opisowy, a projekty Maven z wieloma zadaniami, konfiguracjami i zależnościami będą miały długi plik xml.
Odpowiedni kod build.gradle wykonujący ten sam wynik podano poniżej:
apply plugin:'java' apply plugin:'maven' group = 'com.softwareTest' version ='2.0' repositories { mavenCentral() } dependencies { testCompile group:'junit', name:'junit', version:'2.10' }
Widzimy więc, że skrypt Gradle jest krótszy w porównaniu do Mavena. Poniższe polecenie służy do wykonywania grupy zadań.
gradle tasks –all
Widzimy, że Gradle jest bardziej zdolny niż Maven. Ale mogą się zdarzyć sytuacje, w których nie będziemy potrzebować wszystkich tych dodatkowych funkcji Gradle. Dlatego Maven jest bardziej odpowiedni dla małych projektów, podczas gdy Gradle jest używany głównie w większych projektach.
Podstawowe polecenia Gradle Vs Maven
Poniższa tabela zawiera listę podstawowych poleceń Gradle vs Maven:
Cel, powód | Polecenie Gradle | Polecenie Maven |
---|---|---|
pewnie | Testy Junit są uruchamiane w izolowanym programie ładującym klasy. | |
Aby wygenerować WAR / EAR / JAR | montaż klasy | pakiet mvn |
Aby uruchomić i skompilować | test stopniowy | test mvn |
Usuń katalog build | gradle czysty | mvn clean |
Integracja z Eclipse | gradle eclipse | mvn eclipse: eclipse |
Do instalacji | gradle install | mvn install |
Aby uzyskać wersję | gradle -version | mvn -version |
Możemy przekonwertować Gradle na Maven i na odwrót.
Możemy wykonać poniższe kroki, aby zmienić Mavena na Gradle:
# 1) Przejdź do folderu projektu Maven (lokalizacja pliku pom.xml).
#dwa) Wykonaj polecenie gradle init.
Spowoduje to jednoczesne wygenerowanie kompilacji Gradle settings.gradle plik i build.gradle pliki zostaną utworzone.
Aby zmienić Gradle na Maven, wykonaj poniższe kroki w kolejności:
# 1) build.gradle plik powinien mieć wtyczkę Maven.
# 2) build.gradle plik powinien mieć następujący blok kodu:
apply plugin: 'java' apply plugin: 'maven' group = 'com.test' version = '0.4' dependencies { compile 'commons-lang:commons-lang:2.3' }
# 3) Następnie wykonaj gradle install.
Spowoduje to wygenerowanie plików pom-default.xml w podfolderze pom.
Konfiguracja Mavena
Informacje o konfiguracji Mavena dotyczące użycia i zbudowanych projektów pozostają w następujących miejscach:
- MAVEN_OPTs zmienna środowiskowa : Zawiera informacje niezbędne do uruchomienia wirtualnej maszyny języka Java (JVM), a także udostępnia dodatkowe funkcje, takie jak ustawienia pamięci maszyny JVM, które można ustawić na wartość -Xms256m -Xmx512m.
- Plik Settings.xml: Ten plik znajduje się w katalogu USER_HOME / .m2. Ten plik obsługuje większość konfiguracji używanych we wszystkich projektach zbudowanych w Maven.
- Folder .mvn: Ten folder znajduje miejsce na najwyższym poziomie katalogu projektu. Pliki jvm.config, maven.config i extensions.xml zawierają informacje o konfiguracji specyficznej dla projektu.
- Plik .mvn / extension.xml
- Plik .mvn / maven.config
- Plik .mvn / jvm.config
Konfiguracja Mavena odbywa się na poniższych poziomach:
- Instalacja: Jest to uwzględniane podczas instalacji Mavena.
- Projekt: To jest ten statyczny przechowywany w pliku pom.xml.
- Użytkownik: Jest to skonfigurowane dla określonego użytkownika.
Konfiguracja projektu jest stosowana do całego projektu, podczas gdy inne konfiguracje (instalacja i użytkownik) są stosowane do środowiska, w którym pracujemy. Instalacji i konfiguracji użytkownika nie można dodać jako części współdzielonych danych projektu.
Konfiguracja lokalnego repozytorium
Lokalizację lokalnego repozytorium można zmienić w ramach konfiguracji użytkownika. Domyślnie lokalizacja to katalog .m2. Osiąga się to za pomocą poniższego kodu xml.
path to the directory
Konfiguracja proxy
Konfigurację proxy można zachować w ustawieniach.
Konfiguracja równoległego rozwiązywania artefaktów
Maven pobiera jednorazowo maksymalnie 5 artefaktów z różnych grup.
Aby pobrać dwa artefakty, musimy podać następujące polecenie:
mvn -Dmaven.artifact.threads = 2 weryfikuj
Konfiguracja wdrażania i zabezpieczeń
sekcja opisuje repozytoria, które mają być wdrożone w określonym projekcie. Informacje takie jak nazwa użytkownika, hasło i inne parametry bezpieczeństwa nie mogą być umieszczane w tym projekcie. Aby dostarczyć te informacje, musimy dodać je w odwzorowaniu na identyfikator repozytorium wdrożenia w projekcie.
Osiąga się to za pomocą poniższego kodu xml.
testrepository test password
Konfiguracje profili
Repozytorium Maven można skonfigurować do umieszczenia w profilu. Jednocześnie może istnieć więcej niż jeden profil. W zależności od wymagań możemy zachować jeden aktywny profil, dzięki czemu możemy przełączać się do różnych środowisk.
Inne opcjonalne konfiguracje
Aby mieć konfigurację specyficzną dla środowiska, która nie jest specyficzna dla każdego projektu, musimy skonfigurować ustawienia.
oracle soa pytania do wywiadu i odpowiedzi dla doświadczonych
Maven zawiera plik ustawień, który jest obecny w katalogu instalacyjnym lub katalogu domowym użytkownika. Dba o konfigurację niektórych parametrów środowiskowych, jak pokazano poniżej:
- Nazwa użytkownika i hasło serwera
- Lokalizacja menedżera repozytorium
- Serwer proxy HTTP
Konfiguracje bezpieczeństwa
Do Maven 2.1.0+ mamy możliwość szyfrowania haseł w pliku ustawień. Ale przed przystąpieniem do szyfrowania musimy stworzyć hasło główne.
Wtyczki Maven
Wtyczki Maven są integralną częścią frameworka Maven. Każda wtyczka jest przypisana do konkretnego zadania.
Istnieją dwa typy wtyczek, jak pokazano poniżej:
- Twórz wtyczki : Są wykonywane w czasie kompilacji i powinny być opisane pod tagiem kompilacji w pliku pom.xml.
- Wtyczki raportowania : Są wykonywane w czasie generowania witryny i powinny być opisane pod tagiem raportowania w pliku pom.xml.
Poniższa lista przedstawia niektóre z podstawowych wtyczek Maven:
Podstawowe wtyczki | Wykonane zadania |
---|---|
czysty | Czyści artefakty po kompilacji. |
kompilator | Kompilowany jest kod źródłowy Java. |
rozmieścić | Artefakty kompilacji są wdrażane w repozytorium zdalnym. |
zainstalować | Artefakty kompilacji są instalowane w repozytorium lokalnym. |
weryfikator | Używany do testów integracyjnych. |
zasoby | Katalog wyjściowy pobiera kopię zasobów do umieszczenia w Jar. |
teren | Bieżąca witryna projektu jest generowana. |
weryfikator | Służy do testu integracji i sprawdza określone warunki. |
Niektóre z wtyczek Maven Reporting są wymienione poniżej:
Wtyczki raportowania | Wykonane zadania |
pmd | Generowany jest raport PMD. |
dziennik zmian | Najnowsze zmiany z SCM są generowane w postaci listy. |
zmiany | Generowany jest raport dotyczący śledzenia problemów. |
kratka | Zostanie wygenerowany raport w stylu szachownicy. |
Javadoc | Zostanie wygenerowana dokumentacja Java dla projektu. |
raport pewny | Wyniki testów jednostkowych generowane są w formie raportu. |
linkcheck | Generowany jest raport kontroli łącza dla dokumentacji projektu. |
jxr | Generowane jest odniesienie do źródła. |
Sekcja FAQ
Pytanie 1) Czy Maven jest lepszy niż Gradle?
Odpowiedź: Gradle stosuje podejście przyrostowe i unikanie pracy. Gradle monitoruje zadania wejścia i wyjścia i wykonuje te, które są wymagane. Jednak w przypadku mniejszych projektów Maven jest nadal preferowany, podczas gdy Gradle nadaje się do większych i złożonych projektów.
Pytanie 2) Dlaczego Gradle jest szybszy niż Maven?
Odpowiedź: Gradle jest dużo szybszy niż Maven z powodu poniższych podejść Gradle.
- Użycie programu Gradle Daemon, który utrzymuje w pamięci szczegóły budowania.
- Kompilacja w sposób przyrostowy.
- Użycie pamięci podręcznej kompilacji, która pobiera artefakty z poprzednich kompilacji.
- Modelowanie zależności w efektywny sposób przez Gradle za pomocą wtyczki Java.
Pytanie 3) Co to jest Maven Gradle?
Odpowiedź: Gradle to narzędzie do automatyzacji, które zostało opracowane w oparciu o funkcje Apache Ant i Apache Maven. Jest open source i działa w języku związanym z domeną opartym na Groovy. Nie jest sterowany przez plik pom.xml używany przez Maven dla zależności i konfiguracji projektu.
Pytanie 4) Dlaczego preferowany jest Maven?
Odpowiedź:
Maven jest preferowany ze względu na następujące zalety:
- Centralne repozytorium dla wszystkich zależności projektu.
- Utrzymuje wspólną strukturę folderów w organizacjach.
- Może być zintegrowany z narzędziami do kontroli wersji, takimi jak Git i narzędziem do ciągłej integracji, takim jak Jenkins.
- Proces budowania jest prostszy, łatwy i jednolity.
Pytanie 5) Czy Maven jest przeznaczony tylko dla Javy?
Odpowiedź: Maven to narzędzie do zarządzania projektami i kompilacji, zwykle używane w projektach Java. Można go jednak używać w projektach opracowanych w języku Ruby, C #, Scala i tak dalej.
P # 6) Dlaczego Maven jest używany w Eclipse?
Odpowiedź: Eclipse IDE automatycznie pobiera zależności i konfiguracje z repozytoriów Maven. Ponadto, tworzenie nowych projektów Maven, wsparcie dla istniejących projektów Maven i pom .xml można wykonać za pomocą Eclipse.
P # 7) W jakim języku jest Gradle?
Odpowiedź: Gradle udostępnia do kompilacji język związany z domeną, zwany także DSL. Ten język jest dostępny w Groovy i Kotlin.
najlepsze aplikacje do pobrania mp3 na Androida
Pytanie 8) Jakie są zalety Mavena?
Maven ma pewne zależności, takie jak następujące:
- Centralne repozytorium dla wszystkich zależności projektu.
- Utrzymuje wspólną strukturę folderów w organizacjach.
- Może być zintegrowany z narzędziami do kontroli wersji, takimi jak Git i narzędziem do ciągłej integracji, takim jak Jenkins.
- Proces budowania jest prostszy i łatwiejszy.
Wniosek
W tym samouczku omówiono koncepcje, takie jak Gradle vs Maven, sposób konwertowania Gradle na Maven i odwrotnie, konfiguracje Maven i wtyczki. Zbadano również niektóre podstawowe polecenia Mavena i Gradle'a.
Jeśli chodzi o wtyczki Maven, omówiliśmy niektóre wtyczki raportowania i podstawowe wtyczki Maven.
Ponieważ jest to gorący temat na rynku, konieczne jest pogłębienie zrozumienia tematu i pogłębienie wiedzy na temat tego narzędzia.
=> Przeczytaj serię szkoleń Easy Maven.
rekomendowane lektury
- Co to jest Maven - samouczek Maven dla początkujących
- Jak stworzyć projekt Gradle z selenem
- Jak używać Gradle do tworzenia, testowania i wdrażania projektów
- Gatling Script & Create Gatling Project przy użyciu Maven Archetype
- Integracja Mavena z TestNg przy użyciu wtyczki Maven Surefire
- Co to jest POM (model obiektu projektu) i pom.xml w Maven
- Konfigurowanie Mavena za pomocą Eclipse Java IDE
- 31 Najczęściej zadawane pytania i odpowiedzi w rozmowie z Mavenem