Jestem nowy w Maven, mam projekt sieci web oparty na Javie z maven skonfigurowanym w MyEclipse.
Czy teraz, jeśli zmodyfikowałem jakiekolwiek pliki java, muszę to zrobić, Run as -> Mvn install
czy Mvn package
?
Jestem nowy w Maven, mam projekt sieci web oparty na Javie z maven skonfigurowanym w MyEclipse.
Czy teraz, jeśli zmodyfikowałem jakiekolwiek pliki java, muszę to zrobić, Run as -> Mvn install
czy Mvn package
?
Odpowiedzi:
z http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
package
: weź skompilowany kod i zapakuj go w formacie przeznaczonym do dystrybucji, takim jak JAR.
install
: zainstaluj pakiet w lokalnym repozytorium, aby użyć go jako zależności w innych projektach lokalnie
Tak więc odpowiedź na twoje pytanie jest taka, że zależy to od tego, czy chcesz go zainstalować w lokalnym repozytorium. Instalator również uruchomi pakiet, ponieważ znajduje się on wyżej w stosie fazy celu.
deploy
działa. Jeśli zamienisz go na package
, nie zostanie wdrożony na Nexusie.
mvn install
jest najczęściej używaną opcją.
mvn package
jest rzadko używany, tylko jeśli debugujesz jakiś problem z procesem budowania Mavena.
Zobacz: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Zauważ, że mvn package
utworzy tylko plik jar.
mvn install
zrobi to i zainstaluje pliki jar (i class itp.) w odpowiednich miejscach, jeśli inny kod zależy od tych jar.
Zwykle robię mvn clean install
; spowoduje to usunięcie target
katalogu i odtworzenie wszystkich plików JAR w tej lokalizacji.
Czyszczenie pomaga w usuwaniu niepotrzebnych lub usuniętych rzeczy, które czasami mogą przeszkadzać.
Zamiast debugowania (czasami) po prostu zaczynaj cały czas od nowa.
Z odniesieniem Lifecycle , instalacja będzie działać testów integracyjnych projektu, pakiet nie będzie.
Jeśli naprawdę nie musisz instalować wygenerowanych artefaktów, użyj przynajmniej weryfikacji .
mvn verify
”. Jest to więc dość ostateczna odpowiedź na pierwotne pytanie.
Powinieneś również zauważyć, że jeśli twój projekt składa się z kilku modułów, które są od siebie zależne, powinieneś użyć "zainstaluj" zamiast "pakiet", w przeciwnym razie twoja kompilacja się nie powiedzie, ponieważ gdy użyjesz polecenia instalacji, moduł A zostanie spakowany i wdrożony do lokalnego repozytorium, a następnie, jeśli moduł B potrzebuje modułu A jako zależności, może uzyskać do niego dostęp z lokalnego repozytorium.
Jeśli nie używasz zdalnego repozytorium (takiego jak Artifactory), użyj zwykłego starego:
mvn clean install
Dość stary temat, ale AFAIK, jeśli prowadzisz własne repozytorium (np. Z artifactory), aby udostępniać jar między swoim zespołem (zespołami), możesz użyć
mvn clean deploy
zamiast.
W ten sposób serwer ciągłej integracji może mieć pewność, że wszystkie zależności są poprawnie umieszczone w repozytorium zdalnym. Jeśli go przegapiłeś, mvn nie będzie w stanie znaleźć go w twoim lokalnym repozytorium m2 CI.
pakiet - pobiera skompilowany kod i pakuje go w jego dystrybuowalnym formacie, takim jak plik JAR lub WAR. install - zainstaluj pakiet w lokalnym repozytorium, aby użyć go jako zależności w innych projektach lokalnie
Właściwy sposób to mvn package
jeśli zrobiłeś wszystko poprawnie do głównej części swojej produkcji wtedy nie powinno być potrzeby instalowania paczek w lokalnym repozytorium.
Ponadto, jeśli używasz Travisa, możesz "buforować" swoje zależności, ponieważ nie będą one dotykać twoich, $HOME.m2/repository
jeśli używasz pakietu do własnego projektu.
W praktyce, jeśli nawet spróbujesz to zrobić mvn site
, zwykle musisz to zrobić mvn install
wcześniej. Jest po prostu zbyt wiele błędów w jednym z nich site
lub wiele źle utrzymywanych wtyczek.
To zależy od tego, co próbujesz osiągnąć po zmianie pliku Java. Dopóki nie zechcesz przetestować procesu maven, nigdy nie musisz nic robić. Eclipse / MyEclipse zbuduje to, co jest konieczne, i umieści dane wyjściowe w odpowiednim miejscu w projekcie. Możesz go również uruchomić lub wdrożyć (na przykład jeśli jest to projekt sieci Web), bez konieczności jawnego wykonywania czegokolwiek z maven. W końcu, aby zainstalować projekt w repozytorium mavena, będziesz musiał wykonać instalację mavena. Możesz także mieć inne cele maven, które chcesz zrealizować, których MyEclipse nie zrobi automatycznie.
Jak mówię, to zależy od tego, co chcesz zrobić.