Co dokładnie robi mvn install w maven

165

Właśnie zacząłem używać Mavena i powiedziano mi, żebym to zrobił mvn installw określonym katalogu.

Co mvn installdokładnie robi ?

Myślę, że szuka pom.xmlw bieżącym folderze i zaczyna postępować zgodnie z instrukcjami określonymi w tym pliku. Czy to jest poprawne?

Rajeshwar
źródło

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.

uniqrish
źródło
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.

Dave Newton
źródło
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 .

Sergey Brunov
źródło
3

Krótka odpowiedź

mvn install

  • dodaje wszystkie artefakty (zależności) określone w pom , do lokalnego repozytorium (ze zdalnych źródeł).
Daniel Perník
źródło
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>
Jyoti Prakash
źródło
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 .

Aditya Rewari
źródło