2012-06-25 23 views
6

Jako konsultant mam wielu klientów, dla których pracuję. Każdy klient korzysta z własnego wewnętrznego repozytorium Maven, które jest również skonfigurowane do tworzenia kopii lustrzanych Centralnego i innych zewnętrznych repozytoriów. Muszę skonfigurować moją instalację maven na moim laptopie, aby podczas pracy dla jednego klienta korzystał z wewnętrznego repozytorium do wszystkiego.Wiele mirrorów Maven dla tych samych repozytoriów

Myślałem, że będę w stanie wykorzystać profile do obsługi tego, ale ustawienia lustra nie mogą być zmieniane dla poszczególnych profili.

Czy ktoś ma sugestie, jak podejść do tej maven konfiguracji?

Uwaga: Podobne pytanie jest tutaj: How do I configure maven to access maven central if nexus server is down?, ale to pytanie dotyczy przełączania między centralnym pochodzącym z lustra lub nie. Potrzebuję centralnego (i innych) źródeł z jednego zwierciadła lub innego na podstawie właściwości/ustawienia/zmiennej.

+2

W końcu znalazłem inne pytanie, które dało mi wystarczającą wiedzę, aby odpowiedzieć na moje własne pytanie. Odsyłacz: [link] (http://stackoverflow.com/a/1385744/1481288) Tak, więc stworzyłem definicję lustra za pomocą $ {M2_MIRROR} w adresie URL, a następnie ustawiłem zmienną środowiskową wskazującą właściwe repozytorium wewnętrzne w zależności od tego, którego klienta (lub projektu wewnętrznego) pracuję. – MBru

+0

+1 bardzo bardzo interesujące pytanie! Jestem w tym samym przypadku i zastanawiałem się, jak sobie z tym poradzić ... +1 –

Odpowiedz

0

Mam podobny wymóg w moim projekcie. Stworzyłem dwa oddzielne pliki settings.xml, nazywając je jako settings_one.xml i settings_two.xml i zapisałem je w MAVEN_HOME. W zależności od tego, który plik jest mi potrzebny, mam mały skrypt (plik bat na windows), który nadpisuje istniejący plik settings.xml jednym z dwóch plików ustawień.

del C:\Users\<username>\.m2\settings.xml 
copy C:\Users\<username>\.m2\settings_one.xml C:\Users\tadigotl\.m2\settings.xml 
+1

Nie chciałem zarządzać wieloma plikami ustawień. Myślę, że znalazłem rozwiązanie, które będzie dla mnie skuteczne. Wskazówką było inne pytanie, którego nie znalazłem, kiedy początkowo to badałem. Zobacz mój komentarz w OP – MBru

+0

Całkowicie przekonany :) – thk

0

Najprostszym rozwiązaniem mogę zasugerować jest instalacja git i zobowiązać Państwo .m2/settings.xml (oczywiście ignorować samego repozytorium poprzez .gitignore) do git i formułowania odpowiednich oddziałów dla klientów. Zmiana ustawień zostanie wykonana przez:

git checkout CUSTOMER_BRANCH 

, a ponadto wszelkie zmiany są śledzone przez SCM.

2

Utwórz dwa aliasy powłoki:

alias build_at_home="mvn -s $HOME/.m2/home_settings.xml" 
alias build_at_work="mvn -s $HOME/.m2/work_settings.xml" 

Opcja „-s” jest przydatna dla wyraźnie stwierdzając, który plik ustawień środowiska w użyciu. Korzystamy z tego mechanizmu na naszym wspólnym serwerze kompilacji, aby zapewnić, że każda kompilacja projektu jest odizolowana.

Oczywiście w systemie Windows można utworzyć zestaw plików wsadowych.

+0

Wydaje się, że jest to dobre udoskonalenie rozwiązania wymiany plików ustawień. Do tej pory jednak myślę, że najbardziej podoba mi się rozwiązanie zmienne środowiska, w którym wartość jest używana w ustawieniach lustrzanych mojego pojedynczego pliku settings.xml. – MBru