Co dokładnie robi mvn install w maven


Odpowiedzi:


124

Jak być może wiesz, Maven to narzędzie do automatyzacji kompilacji dostarczane przez Apache, które robi więcej niż zarządzanie zależnościami. Możemy zrobić to jako peer Ant i Makefile, który pobierze wszystkie wymagane zależności.

Na a mvn install, tworzy ramkę w drzewie zależności w oparciu o konfigurację projektu pom.xmldla wszystkich podprojektów w super pom.xml(głównym POM) i pobiera / kompiluje wszystkie potrzebne komponenty w katalogu o nazwie .m2pod folderem użytkownika. Te zależności będą musiały zostać rozwiązane, aby projekt został zbudowany bez żadnych błędów i mvn installjest to jedno narzędzie, które może pobrać większość zależności.

Ponadto w Maven są inne narzędzia, dependency:resolvektórych można używać osobno w określonych przypadkach. Cykl życia kompilacji mvn jest następujący: Powiązania cyklu życia

  1. process-resources
  2. compile
  3. process-test-resources
  4. test-compile
  5. test
  6. package
  7. install
  8. deploy

Fazę testową tego mvn można zignorować za pomocą flagi -DskipTests=true.


9
Na marginesie, jeśli chcesz pominąć wszystkie cele związane z testem, użyj: -Dmaven.test.skip = true (zamiast -DskipTests = true)
— Manoj Shrestha

Ta odpowiedź nie wyjaśnia, że ​​komenda install ostatecznie instaluje artefakt lokalnie, to znaczy w lokalnym repozytorium.
— PeriChandra

34

Czy spojrzałeś na któryś z dokumentów Maven, na przykład dokumentację wtyczki Maven install ?

Wersja Nutshell: zbuduje projekt i zainstaluje go w lokalnym repozytorium.


Powiedzmy, że uruchamiasz „mvn install” w bibliotece open source. Następnie uruchamiasz „mvn install” w projekcie, który korzysta z biblioteki open source, którą najpierw skompilowaliśmy. Czy podczas uruchamiania „mvn install” pliki JAR będą najpierw wyszukiwane w lokalnym repozytorium? Czy jest zależne od pliku POM?
— Kevin Meredith

1
@Kevin Powinno być najpierw lokalne, ponieważ o to właśnie chodzi. Jeśli nie ma go w lokalnym repozytorium, będzie szukał repozytoriów, które skonfigurowałeś (lub ustawień domyślnych) i zainstaluje je w lokalnym repozytorium, jeśli zostanie znalezione. Podejrzewam, że możesz go skonfigurować tak, aby zawsze pomijał lokalne repozytorium, chociaż nie wiem, jak to zrobić, nie sprawdzając go.
— Dave Newton

17
mam cię spojrzał na kanonicznych dokumentów dla Maven? Witryna Apache wyjaśnia cel instalacji mvn w następujący sposób: „W większości przypadków cel instalacja: instalacja nie wymaga żadnej konfiguracji, potrzebuje POM projektu i pliku artefaktu do zainstalowania podczas fazy instalacji domyślnego cyklu życia kompilacji”. To dlatego, że dokument Apache nie wyjaśnia, czym właściwie jest 'mvn install', ludzie lubią plakat i ja szukamy odpowiedzi. Całkowicie rozsądne pytanie.
— bethesdaboys


6

install:installCelem jest dostarczana przez «Apache Maven zainstalować wtyczkę»:

Wtyczka instalacyjna Apache Maven

Wtyczka instalacyjna jest używana podczas fazy instalacji w celu dodania artefaktów do lokalnego repozytorium. Install Plugin używa informacji w POM ( groupId, artifactId,version ), aby określić właściwą lokalizację dla artefaktu w lokalnym repozytorium.

Repozytorium lokalne to lokalna pamięć podręczna, w której przechowywane są wszystkie artefakty potrzebne do kompilacji. Domyślnie znajduje się w katalogu domowym użytkownika ( ~/.m2/repository), ale lokalizację można skonfigurować w ~/.m2/settings.xmlprogramie<localRepository> elementu.

- Wtyczka instalacyjna Apache Maven - Wprowadzenie .

Powiedziawszy to, dokładny cel:

install:install służy do automatycznej instalacji głównego artefaktu projektu (JAR, WAR lub EAR), jego POM i wszelkich dołączonych artefaktów (źródła, javadoc itp.) wytworzonych przez dany projekt.

- Wtyczka instalacyjna Apache Maven - Wprowadzenie .

Dodatkowe informacje na temat celu można znaleźć na stronie Apache Maven Install Plugin - install: install .

Aby uzyskać dodatkowe informacje na temat ogólnego cyklu życia kompilacji i miejsca, w którym cel znajduje się w cyklu życia kompilacji, zapoznaj się ze stroną Maven - wprowadzenie do cyklu życia kompilacji .


3

Krótka odpowiedź

mvn install

  • dodaje wszystkie artefakty (zależności) określone w pom , do lokalnego repozytorium (ze zdalnych źródeł).

2

-DskipTests=true jest krótką formą -Dmaven.test.skip=true

Wprowadź zmiany w pliku Setting.xml w folderze .m2 . Możesz użyć łącza do lokalnego repozytorium, aby pliki JAR po pobraniu nie były ponownie pobierane.

<url>file://C:/Users/admin/.m2/repository</url>
 </repository>

0

Podstawowe zadania instalacyjne mvn to 1) Pobierz zależności i 2) Zbuduj projekt

podczas pracy 1 jest obecnie obsługiwane przez identyfikatory, takie jak intellij (pobierają je dla dowolnej zależności w POM)

Instalacja mvn jest teraz używana głównie do zadania 2 .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.