Wskazówki dotyczące utrzymywania wewnętrznego repozytorium Maven?

Jestem zainteresowany utrzymaniem Maven 2 repozytorium dla mojej organizacji. Jakie są niektóre wskazówki i pułapki, które mogłyby pomóc.

Jakie są wytyczne dla użytkowników, których należy przestrzegać przy ustalaniu standardów pobierania lub publikowania własnych artefaktów do repozytorium podczas wydawania kodu? Jakie rodzaje zarządzania / zasady obowiązują dla tego typu rzeczy? Co o tym piszesz w swoim deweloperze przewodnik/dokumentacja?

Aktualizacja: postawiliśmy Nexusa i byliśmy z niego bardzo zadowoleni - postępowaliśmy zgodnie z wytycznymi Sala i nie mieliśmy żadnych problemów. Ponadto ograniczyliśmy dostęp do wdrażania i zautomatyzowaliśmy tworzenie / wdrażanie artefaktów migawek za pośrednictwem serwera CI firmy Hudson. Hudson może analizować wszystkie zależności projektu upstream/downstream, więc jeśli problem z kompilacją, niepowodzenie testu lub inne naruszenie spowoduje przerwanie kompilacji, nie dojdzie do wdrożenia. Be weary Robienie wdrożeń migawek w Maven2 / Maven3, ponieważ metadane zmieniły się między obiema wersjami. Strategia rozmieszczenia migawek" tylko Hudson " złagodzi to. Nie używamy wtyczki Release, ale napisaliśmy trochę hydrauliki wokół wtyczki Version , gdy zamierzamy przenieść migawkę do wydania. Używamy również m2eclipse i wydaje się, że działa bardzo dobrze z Nexusem, ponieważ z pliku ustawień może zobaczyć Nexusa i wie, aby indeksować informacje o artefaktach do wyszukiwania stamtąd. (Choć I musiałem dostosować niektóre z tych ustawień, aby w pełni indeksować nasze wewnętrzne migawki.) Polecam również użycie Source jar ze swoimi artefaktami jako standardowej praktyki, jeśli jesteś zainteresowany zrobieniem tego. Konfigurujemy to w super POM.

UPDATE2 : natknąłem się na ten dokument Sonatype , który opisuje różne etapy adopcji/dojrzałości, z których każdy ma inne cele użytkowania dla Menedżera repozytoriów Maven.

Author: cwash, 2009-06-24

7 answers

Polecam skonfigurować jeden serwer nexus z co najmniej czterema repozytoriami. Nie polecam artifactory. Darmowa wersja Nexusa jest idealna dla zespołu programistów składającego się z mniej niż 20 osób w mniej niż trzech grupach. Jeśli masz więcej użytkowników, zrób sobie przysługę i zapłać za wydanie Sonatype. Integracja z LDAP się opłaca.

  1. Wydanie Wewnętrzne
  2. Wewnętrzna Migawka
  3. wewnętrzna strona 3rd dla kodu używanego w domu, który pochodzi z zewnętrznych źródeł lub dla zatwierdzonych wersji stron trzecich. Daj sterowniki JDBC, javax.* rzeczy i rzeczy od klientów i partnerów tutaj.
  4. zewnętrzne Proxy wspólne proxy dla wszystkich zwykłych źródeł, takich jak m2, codehaus itp

Skonfiguruj Nexus tak, aby wykonywał następujące czynności dla wewnętrznych transakcji repo

  1. Usuń stare migawki w regularnych odstępach
  2. Usuń migawki po wydaniu
  3. Tworzenie plików indeksowych. To również przyspiesza lokalne Kompilacje

Mają wspólne ustawienia.plik xml, który używa tych czterech i tylko tych czterech źródeł.{[9] } jeśli potrzebujesz dostosować poza tym spróbuj zachować część wspólnąpliku ustawień i użyć profile dla różnic. nie pozwól, aby Twoi klienci po prostu zwijali swoje własne ustawienia, albo skończysz z kodem, który opiera się na jednej maszynie, ale nie na żadnej innej maszynie.

Zapewnij wspólny serwer proxy dla swoich klientów. w Nexusie możesz dodać kilka proxy do popularnych źródeł Maven (Apache, JBoss, Codehaus) i mają jeden serwer proxy wystawiony na klientów wewnętrznych. To sprawia, że dodawanie i usuwanie źródeł z klientów jest znacznie łatwiejsze.

Nie mieszaj artefaktów wewnętrznych i zewnętrznych w tym samym repozytorium. Nexus umożliwia dodawanie jarów do wewnętrznego repozytorium za pomocą interfejsu WWW. Polecam to jako sposób dodawania sterowników JDBC i innego zewnętrznego kodu do strony trzeciej. Interfejs użytkownika jest całkiem przyjemny w użyciu w porównaniu z większością enterprise oprogramowanie .

Zdefiniuj wspólny rodzic pom , który definiuje wewnętrzne migawki i repozytoria release za pomocą znacznika distributionManagement. Wiem, że wiele osób mówi ci, żebyś tego nie robił. I chociaż przyznaję, że istnieją różnego rodzaju problemy z robieniem tego, to działa dobrze, jeśli klienci będą budować tylko wydania i migawki do wdrożenia w jednym wewnętrznym repozytorium.

Jeśli masz istniejące źle zarządzane repozytorium Maven , Utwórz 5. repos zwane Legacy i umieścić tam całe repos. Skonfiguruj zadanie cron, aby usunąć stare pliki ze starszych plików, gdy skończą rok. To daje każdemu rok, aby się z niego odsunąć i zaktualizować swoje poms.

Ustal łatwą do trzymania się konwencji nazewnictwa wewnętrznych artefaktów. wolę GroupID z działu.Funkcja.Projekt i artefakt dla tego componentName. W przypadku repozytoriów wewnętrznych, com / org / net i nazwa firmy mogą być nieistotne. I źle, jeśli firma zmieni nazwę. Jest znacznie mniej prawdopodobne, że dział sprzedaży, księgowości lub zapasów zostanie przemianowany.

 28
Author: sal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-11 14:37:10

Zdecydowanie użyj Nexus . : P

Użyłem zarówno Nexusa, jak i Artifactory. Interfejs dla Nexusa jest o wiele bardziej wytrzymały, jest o wiele bardziej konfigurowalny i oczywiście napisany przez Sonatype , który reprezentuje prawie wszystko, co Maven dobrze.

To powiedziawszy, Artefaktory jest przyzwoite i wykonalne.

 7
Author: cgp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:09:11
 4
Author: stevedbrown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-24 16:34:23

Sam używam Artifactory i uwielbiam interfejs użytkownika i łatwość wdrażania/konserwacji. To powiedziawszy, nigdy nie korzystałem z Nexusa i naprawdę nie mogę ci pomóc w odpowiednim porównaniu funkcji.

Oto kilka rzeczy, które bardzo mi się podobają w Artifactory (pamiętaj, że Nexus też może mieć te funkcje):

  1. ładny interfejs Web 2.0.
  2. możliwość importowania lokalnego repozytorium Maven, aby pomóc Ci zacząć.
  3. łatwość integracji z istniejącymi serwerami LDAP dla bezpieczeństwa(jestem wielkim fanem pojedynczego repozytorium do przechowywania poświadczeń).

Biorąc pod uwagę, że istnieją naprawdę tylko dwie główne implementacje repozytorium Maven, jeśli naprawdę chcesz mieć pewność, że dokonałeś właściwego wyboru, polecam wypróbowanie obu i samodzielne podjęcie decyzji, które bardziej Ci się podoba.

 4
Author: Jack Leow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-24 17:04:33

Być może jest to oczywiste, ale dla powtarzalności Programiści nigdy nie powinni nadpisywać artefaktów, powinny to być nowe wersje.

Dotyczy to również repozytoriów macierzystych. Jeśli pobierasz Apache-commons w wersji 1.2.3, naprawdę nigdy nie powinieneś go ponownie pobierać. Poprawki pochodzą z ostatnich wersji, nie są stosowane do istniejących wersji.

 3
Author: cgp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-24 16:16:30

Coś jeszcze do rozważenia:

Http://archiva.apache.org/

 3
Author: Brad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-25 09:25:24

Jako oryginalne pytanie (kwestie techniczne do rozważenia przy konstruowaniu repozytorium M2), zalecałbym utworzenie użytkownika tylko do odczytu do przeglądania repozytorium i użytkownika administracyjnego na administratora (To powiedziawszy: jeden użytkownik tylko do odczytu dla wszystkich użytkowników, którzy nie są administratorami). Co więcej, polecam cykliczne generowanie kopii zapasowych obrazów (może raz dziennie ?). Bardzo ważne zarówno jeśli Twoje repozytorium jest duże, jak i instalujesz własne artefakty od czasu do czas.

Last, but not least, when adding new remote repozytorium, you must add inclusion / exclusion filters so an artifact lookup in the repozytorium would be done more quickly.

Istnieje wiele innych problemów do rozważenia, ale są to główne problemy, które napotkałem podczas zarządzania wewnętrznym repozytorium Maven.

Dla przypomnienia, używam zarówno Nexusa, jak i Artifactory; mogę wyraźnie stwierdzić, że podczas gdy Nexus jest bardzo prosty i operacyjny (choć czasami mam problemy z procesem instalacji na Ubuntu), jego darmowa wersja nie może konkurować z community (free) edition Artifactory. Z wyjątkiem niesamowitego interfejsu Web 2 Artifactory, jego główne funkcje, takie jak zarządzanie bezpieczeństwem, okresowe kopie zapasowe i problemy z dostępnością, wykraczają poza te z Nexus.

 3
Author: Guy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-30 08:31:21