Instalacja Mavena krok po kroku
-
Najpierw musimy zainstalować Mavena. Pobierz go z tego linku .
-
Następnie rozpakuj pobrane archiwum i ustaw zmienną środowiskową M2_HOME na lokalizację rozpakowanego archiwum. Na przykład C:\\Program Files\\maven\\
-
Aby upewnić się, że wszystko jest zainstalowane, wykonaj następujące polecenie w wierszu poleceń:
wersja mvn
-
Jeśli zostanie wyświetlona informacja o wersji dla Maven, Java itp., wszystko jest gotowe.
-
Teraz otwórz IntelliJ IDEA i utwórz nowy projekt. W pierwszym oknie wybierz Maven:
-
Kliknij „Dalej” i wypełnij okno, które się pojawi:
-
Następnie, jak zwykle, utwórz projekt w dowolnym miejscu.
Po utworzeniu projektu zwróć uwagę na jego strukturę:
- folder src/main/java zawiera klasy Java
- folder src/main/resources zawiera zasoby używane przez aplikację (strony HTML, obrazy, arkusze stylów itp.)
- folder src/test jest przeznaczony do testów
Zarządzanie zależnościami w Maven
Być może spotkałeś się z wyrażeniem „menedżer zależności”. Maven wie, jak zarządzać zależnościami. Dzięki Maven nie musisz tracić dużo czasu na szukanie w Internecie potrzebnej biblioteki, pobieranie jej, a następnie podłączanie do swojego projektu. Zamiast tego wystarczy dodać wymaganą bibliotekę do listy zależności w Maven.Zależności są określone w węźle zależności pliku pom.xml
Załóżmy, że potrzebujesz biblioteki Apache Commons IO w swoim projekcie, aby uprościć pracę z plikami. Aby dodać bibliotekę, piszemy pięć linii w pom.xml:<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
Teraz twój plik pom.xml powinien wyglądać tak:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>example.com</groupId>
<artifactId>example</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
</project>
Następnie zezwól IntelliJ IDEA na zaimportowanie zależności (okno dialogowe powinno pojawić się w prawym dolnym rogu). Teraz biblioteka jest gotowa do użycia:
import org.apache.commons.io.FileUtils;
import java.io.File;
public class TestMaven {
public static void main(String[] args) {
File tempDirectory = FileUtils.getTempDirectory();
}
}
Wszystkie kolejne zależności muszą być również zapisane wewnątrz <dependencies>
znacznika. Być może zastanawiasz się, jak znaleźć informacje o bibliotece, które musisz wskazać wewnątrz tagu <dependency>
. To łatwe. Zawsze należy ustawić trzy parametry: „groupId”, „artifactId” i „version”. Istnieją dwa sposoby określenia tych parametrów:
-
Na stronie internetowej biblioteki. Jeśli potrzebujemy biblioteki Apache Commons IO, wchodzimy na oficjalną stronę i wybieramy zakładkę „Informacje o zależnościach”. Wszystkie niezbędne informacje są tutaj — możesz je po prostu skopiować i dodać do
<dependencies>
węzła. -
W repozytorium Maven . Wpisz „apache commons io” w pasku wyszukiwania, a zobaczysz wszystkie dostępne wersje biblioteki. Po wybraniu właściwego, po prostu skopiuj następujące elementy:
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency>
i dodaj go do pliku pom.xml.
Rodzaje repozytoriów Maven
Warto jeszcze raz wspomnieć o repozytoriach Mavena, bo właściwie mamy ich dwa: zdalne ( centralne) i lokalne (na Twoim komputerze). Wszystkie biblioteki, które dodajesz do swoich projektów, są zapisywane w lokalnym repozytorium. Kiedy Maven dodaje wymaganą zależność do projektu, najpierw sprawdza, czy biblioteka już istnieje w lokalnym repozytorium. Uzyskuje dostęp do zdalnego repozytorium tylko wtedy, gdy nie znajduje biblioteki lokalnie. Jak widzisz, możesz użyć Mavena do dodania zależności, ale to nie wszystko, co potrafi.Budowanie projektu Java przy użyciu Maven
Dla początkującego ta funkcja może wydawać się bezcelowa. Po co nam to, skoro mamy IDE? Pozwól mi wyjaśnić. Po pierwsze, serwer, na którym musisz zbudować swoją aplikację, może nie mieć ani środowiska programistycznego, ani interfejsu graficznego. Po drugie, w przypadku dużych projektów Maven lepiej buduje projekt. Więc bez zbędnych zwłok, rozważymy proces budowania aplikacji przy użyciu Mavena.Fazy
Proces budowy aplikacji jest znanym cyklem życia projektu Maven i składa się z faz. Możesz je obejrzeć w IDEA klikając Maven > example > Lifecycle w prawym górnym rogu: Jak widać, faz jest 9:- clean — usuwa wszystkie skompilowane pliki z katalogu docelowego (miejsca, w którym zapisywane są gotowe artefakty)
- validate — sprawdza, czy dostępne są wszystkie informacje wymagane do zbudowania projektu
- kompiluj — kompiluje pliki kodu źródłowego
- test — uruchamia testy
- package — pakuje skompilowane pliki (w archiwum JAR, WAR itp.)
- zweryfikuj — sprawdza, czy spakowany plik jest gotowy
- install — umieszcza pakiet w lokalnym repozytorium. Teraz może być używany przez inne projekty jako biblioteka zewnętrzna
- site — tworzy dokumentację projektową
- wdrożyć — kopiuje zbudowane archiwum do zdalnego repozytorium
-
przez linię poleceń:
pakiet mvn
-
przy użyciu IntelliJ IDEA:
Przed rozpoczęciem fazy pakietu wykonywane są fazy sprawdzania poprawności, kompilacji i testowania. Wyjątkiem jest faza czysta. Dobrym pomysłem jest uruchomienie tej fazy przed każdą kompilacją projektu. Możesz wymienić wiele faz, oddzielając je spacjami:
czysty pakiet mvn.
Wtyczki
Aby dodać wtyczkę Mavena do projektu, musimy dodać jej opis do pliku pom.xml, używając znaczników<build>
i <plugins>
, podobnie jak dodaliśmy zależności. Załóżmy na przykład, że potrzebujemy wtyczki, aby sprawdzić, czy używamy najnowszej wersji wszystkich naszych zewnętrznych bibliotek. Po krótkim przeszukiwaniu Internetu możesz znaleźć tę wtyczkę i instrukcje, jak z niej korzystać. Ustawmy identyfikator grupy, identyfikator artefaktu i wersję. Wskażemy, jakie cele wtyczka musi spełniać i na jakim etapie. W naszym przypadku sprawdzanie zależności w bieżącym pom.xml jest ustawione na fazę sprawdzania poprawności. Teraz nasz plik pom.xml wygląda tak:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>example.com</groupId>
<artifactId>example</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>com.soebes.maven.plugins</groupId>
<artifactId>uptodate-maven-plugin</artifactId>
<version>0.2.0</version>
<executions>
<execution>
<goals>
<goal>dependency</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
</project>
Mogliśmy kontynuować pracę nad naszym projektem. Ale spróbujmy zmienić wersję Apache Commons IO na 2.0 i zbudować projekt. Dostaniemy
[ERROR] Failed to execute goal com.soebes.maven.plugins:uptodate-maven-plugin:0.2.0:dependency (default) on project example: There is a more up-to-date version ( 2.6 ) of the dependency commons-io:commons-io:2.0 available. -> [Help 1]
Tutaj mamy błąd kompilacji generowany przez wtyczkę. Komunikat o błędzie informuje, że używamy wersji 2.0, gdy dostępna jest wersja 2.6. Zasadniczo Maven jest bardzo przydatnym narzędziem. Być może na początku będzie się to wydawać trudne w użyciu, ale ćwicz! Twórz swoje projekty za pomocą Mavena, a po chwili będziesz bardzo zadowolony z efektu końcowego. W tym artykule celowo pominięto wiele szczegółów dotyczących Mavena — skupiliśmy się na najważniejszych. Ale nie ma ograniczeń co do ulepszeń: możesz przeczytać więcej o Maven na jego oficjalnej stronie internetowej . Część 5. Serwlety i Java Servlet API. Pisanie prostej aplikacji webowej Część 6. Kontenery serwletów Część 7. Wprowadzenie do wzorca MVC (Model-View-Controller)