2010-05-07 20 views
11

Jestem zdezorientowany, jeśli chodzi o użycie maven w środowiskach programistycznych i produkcyjnych - jestem pewien, że jest to coś prostego, czego mi brakuje. Wdzięczny za każdą pomoc ..Zwolnienie z rozwoju do produkcji w maven

Ustawiłem maven wewnątrz zaćmienia na mojej lokalnej maszynie i napisałem jakieś oprogramowanie. Bardzo podoba mi się to, jak bardzo ułatwiało to takie rzeczy, w tym słoiki zależne.

To jest moje środowisko programistyczne. Ale teraz chcę zwolnić projekt do produkcji na zdalnym serwerze. Przeszukałem dokumentację, ale nie mogę się dowiedzieć, jak to ma działać lub jaka jest najlepsza praktyka. Powinnaś:

a) Działać także w środowisku produkcyjnym i przesyłać wszystkie twoje pliki do twojego środowiska produkcyjnego i odbudować tam swój projekt? (Coś we mnie rodzi się z pomysłu odbudowania "zwolnionego" kodu na serwerze produkcyjnym, więc jestem prawie pewien, że to nie jest w porządku ..)

b) użyj mvn: package, aby utworzyć plik jar, a następnie skopiuj to do produkcji? (Ale co z tymi wszystkimi fajnymi zależnościami? Czy nie ma niebezpieczeństwa, że ​​testowany kod będzie teraz działał przeciwko różnym wersjom zależnych słoików w środowisku produkcyjnym, prawdopodobnie łamiąc twój kod? Lub brakuje słoika ...?)

c) Coś jeszcze, że nie jestem na zastanawianie się ..

Dzięki z góry za wszelką pomoc!

+0

Dziękuję wszystkim za pomoc! Pascal - świetna odpowiedź! Dziękuję Ci! Czuję, że postawiłeś mnie na znacznie lepszej ścieżce :-) – Jeremy

+0

Nie ma za co, cieszę się, że jest to pomocne. –

Odpowiedz

15
  • Miałeś mieć swój kod pod kontrolą wersji (i nigdy nie „upload” plików do innego komputera, to „Pobieranie” ich z systemu kontroli wersji, jeśli jest wymagany).

  • Należy spakować kod w formacie (WAR, EAR, inny rodzaj pakietu), który można wdrożyć w środowisku produkcyjnym w celu wykonania. Takie pakiety zazwyczaj zawierają zależności. Aby zbudować bardziej złożone pakiety, pomocna może być Maven Assembly Plugin.

  • Maven wygenerowane artefakty (słoiki, wojny, cokolwiek) należy wspólne poprzez zdalne repozytorium (a więc rozmieszczone - Znaczy mvn deploy tutaj - do tego zdalnego repozytorium). Zdalnym repozytorium może być prosty system plików obsługiwany przez serwer WWW lub bardziej zaawansowane rozwiązanie, takie jak Nexus.

  • Tworzenie jest zwykle wykonywane przy użyciu zależności SNAPSHOT (na przykład 1.0-SNAPSHOT). W czasie wydania, powinieneś zmienić wersję na "naprawioną" wersję (np. 1.0) i kilka innych bitów ze swojego pom.xml, uruchomić kompilację, aby sprawdzić, czy wszystko jest w porządku, zatwierdzić zmodyfikowany pom.xml, utworzyć tag w VCS, wypromuj wersje do nowego SNAPSHOT (np. 1.1-SNAPSHOT) w pom.xml, zatwierdź nowy pom.xml w VCS. Cały proces wymaga trochę pracy, ale można to zautomatyzować za pomocą Maven Release Plugin.

  • W środowisku produkcyjnym pobierz artefakty z odległego repozytorium i rozmieść je (niektóre projekty automatyzują wdrażanie na serwerze produkcyjnym przy użyciu Maven, ale to już inna historia).

Oczywiście są różne warianty (wdrożenie do produkcji jest w większości przypadków specyficzne dla firmy), ale istnieje ogólny pomysł.

1

Podczas budowania artefaktu zwykle podaje się zakres zależności. W domyślnym zasięgu powinien on być spakowany w twoim archiwum. Jeśli nie chcesz, użyj zakresu "pod warunkiem" - w takim przypadku musisz przygotować środowisko uruchomieniowe zapewniające zależność. Generalnie nie jest dobrym pomysłem przebudowanie pakietu tylko w celu wdrożenia.

Jeśli chodzi o wdrażanie, you can use maven's antrun plugin to copy files locally or via scp.

Powiązane problemy