2012-01-19 10 views
7

Chcę przesłać moją niestandardową wtyczkę maven do repozytorium nexus.Jak wgrać maven plugin do repozytorium Nexus?

Moim problemem jest to, że kiedy mogę przesłać moje wtyczki Nexus web IU jak zwykłe uzależnienie, Maven nie można go znaleźć:

Plugin com.huawei: Maven-projekt-version-plugin: 1.0 lub nie udało się rozwiązać jednej z jego zależności: nie udało się odczytać deskryptora artefaktu dla com.huawei: maven-project-version-plugin: jar: 1.0: nie można znaleźć com.firma: maven-project-version-plugin: pom : 1.0 w http://localhost:8081/nexus/content/groups/public zostało zbuforowane w lokalnym repozytorium , rozdzielczość nie zostanie ponownie sprawdzona do czasu aktualizacji interwału nexusa upłynął lub aktualizacje są wymuszane -> [Pomoc 1]

Ale po zainstalowaniu mojej wtyczki do lokalnego lokalnego repozytorium (nie nexus) za pomocą wiersza poleceń wszystko jest w porządku.

Jaka jest różnica między instalacją niestandardowej wtyczki maven a instalowaniem artefaktów "non plugin"? Czy są jakieś sztuczki?

Moja settings.xml:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> 

    <mirrors> 
    <mirror> 
     <!--This sends everything else to /public --> 
     <id>nexus</id> 
     <mirrorOf>*</mirrorOf> 
     <url>http://localhost:8081/nexus/content/groups/public</url> 
    </mirror> 
    </mirrors> 

    <profiles> 
    <profile> 
     <id>nexus</id> 
     <!--Enable snapshots for the built in central repo to direct --> 
     <!--all requests to nexus via the mirror --> 
     <repositories> 
     <repository> 
      <id>central</id> 
      <url>http://central</url> 
      <releases><enabled>true</enabled></releases> 
      <snapshots><enabled>true</enabled></snapshots> 
     </repository> 
     </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>central</id> 
      <url>http://central</url> 
      <releases><enabled>true</enabled></releases> 
      <snapshots><enabled>true</enabled></snapshots> 
     </pluginRepository> 
     </pluginRepositories> 
    </profile> 
    </profiles> 

    <activeProfiles> 
    <!--make the profile active all the time --> 
    <activeProfile>nexus</activeProfile> 
    </activeProfiles> 
</settings> 
+0

Potrzebuję więcej informacji na temat konfiguracji maven. Czy korzystasz z repozytoriów wtyczek w swoim pliku settings.xml lub pom.xml? – Michael

+0

@ Michael Dodałem mój plik settings.xml, jak mówisz. Ale myślę, że problem nie leży w tym. Mogę pobrać wszystkie inne zależności z nexus: moje zależności od hostowanych repozytoriów i wszystkich innych zależności od repozytoriów proxy. Mogę pobrać moją wtyczkę, jeśli zaznaczę je jako . Ale kiedy próbuję ustawić je tak, jak maven nie może go znaleźć. – Sergey

Odpowiedz

8

Problem został rozwiązany. Cóż, nie wiem jak, ale dziś wszystko jest pracą. Myślę, że problem dotyczył pamięci podręcznej Nexusa. Właśnie usunąłem hostowane repozytorium i utworzyłem je ponownie. Być może istnieją mniej radykalne metody, ale ja ich nie znam =) Usuń artefakt, a następnie po prostu "wygasaj pamięć podręczną" nie pomaga w moim przypadku.

Cóż, odpowiedź na moje pytanie: Nie ma żadnej różnicy między wtyczką instalacyjną a artefaktem niezgodnym z wtyczką w Nexusie, z wyjątkiem jednego. Jeśli wybierzesz GAV Definition: GAV parameters, musisz wybrać "maven-plugin" w combobox "Packaging".

Myślę, że nie ma potrzeby pisania instrukcji krok po kroku, jest to bardzo proste. Po prostu wybierz hostowane repozytorium -> Pobierz Artefakt i wypełnij wymagane pola.

4

Należy również dodać, że należy również załadować plik pom z wtyczki Maven. Jeśli nie Nexus automatycznie wygeneruje taki, który nie jest poprawny. to będzie po prostu podstawowy pom składający się z wersji, artifactID, opakowania i groupID.