2011-02-09 11 views
14

W moim Maven ~ ./ m2/settings.xml Mam zdefiniowane lustro i kilka repozytoriów.Howto repozytorium lustro wyłączyć w ustawieniach maven

<mirrors> 
    <mirror> 
    <id>someid</id> 
     ..... 
    </mirro> 
</mirrors> 
... 

<profiles> 
    <profile> 
     <id>default</id> 
      <activation> 
        <activeByDefault>true</activeByDefault> 
       </activation> 
       <repositories> 
      <repository>                 <id>repo....</id> 
.... 

     </profile> 
</profiles> 

To działa prawidłowo.

Istnieje kilka projektów, w których chcę wyłączyć dublowanie i domyślny profil. Wiem, że mogę zdefiniować oddzielny profil dla repozytoriów, ale nie wiem, jak mogę powiedzieć wtyczce maven eclipse, aby nie używać domyślnego profilu lub określonego profilu. Ponadto: jak zmienić lustro dla projektu?

Odpowiedz

2

Skopiuj plik settings.xml, usunąć wpis mirror i powiedzieć Maven używać z opcją wiersza poleceń --settingsplik.

użycie XSLT lub narzędzie linii poleceń jak XMLStarlet zautomatyzować proces:

xmlstarlet ed -N 's=http://maven.apache.org/SETTINGS/1.0.0' --delete "//s:mirror" settings.xml 

wydruki nowy settings.xml plików do stdout która nie zawiera żadnych ustawień lustro.

+2

Jeśli narzędzie XSLT oparte jest niedostępny, w sed: 'sed settings.xml -e "/ /,/<\/mirrors>/d"' – pimlottc

1

Wpisy w pozycji settings.xml dotyczą wszystkich projektów w systemie, dlatego nie należy ich dostosowywać do indywidualnych projektów.

Jeśli chcesz, aby różne projekty miały różne profiles, powinieneś je określić w projekcie pom. Nie musisz mieć sekcji <profiles> w swoim ~/m2/settings.xml.

Jeśli chodzi o <mirrors>, mają one zastosowanie do repositories, które chcesz zwierciadlać. Możesz wybrać, które repozytoria muszą być odzwierciedlone, ale nie które projekty powinny korzystać z lustra, a które nie. Zawsze możesz uruchomić projekt w trybie offline, jeśli nie chcesz go pobierać ze zdalnego repozytorium.

8

Niestety jest to niemożliwe w przypadku pojedynczego pliku settings.xml. Jest żądanie funkcji w Maven JIRA, zagłosuj na to!

Obejście jest mieć dwa settings.xml i działa Maven z wybranej konfiguracji:

mvn -s my-settings.xml 
+2

Wow, cytowany żądanie funkcja jest obecnie otwarty przez 7 lat. – asmaier

+1

Niezły pomysł ... Ta odpowiedź oszczędza mnóstwo mojego czasu! Dziękuję Ci. – smilyface

0

Multiple settings.xml nie jest konieczne myślę, aby to zrobić.

Istnieje możliwość sterowania lustrami za pomocą profili.

mogę użyć właściwości dla mojego repozytorium id na przykład przyrostek ${repo-suffix}

$ mvn help:effective-pom | grep "<distributionManagement>" -A 3 
    <distributionManagement> 
    <repository> 
     <id>deployment${repo-suffix}</id> 
     <name>Internal Releases</name> 

Wtedy mogę dodać repo-suffix do profilu na przykład, aby nadać jej wartość -1.

<profile> 
    <id>my-profile</id> 
    <activation> 
    <activeByDefault>true</activeByDefault> 
    </activation> 
    <properties> 
     <repo-suffix>-1</repo-suffix> 
     ... 

W ten sposób mam teraz dynamicznie zdefiniowany identyfikator repozytorium w plikach pom.

$ mvn help:effective-pom | grep "<distributionManagement>" -A 3 
    <distributionManagement> 
    <repository> 
     <id>deployment-1</id> 
     <name>Internal Releases</name> 

Dla tych to deployment-1 repozytorium można zdefiniować lusterek w moim settings.xml. Jest to faktycznie to samo, co możliwość umieszczenia lustra w profilu.

Powiązane problemy