2016-02-02 7 views
7

Potrzebuję wdrożyć niestandardowy słoik do Artifactory wraz z jar wygenerowany z mojego projektu Java. Obecnie jedyną metodą, jaką mogę znaleźć, jest użycie wiersza polecenia przy użyciu:Czy mogę dołączyć plik mvn deploy: deploy w pliku pom lub settings.xml zamiast celu cli

mvn deploy:deploy-file -DgroupId=<group-id> \ 
    -DartifactId=<artifact-id> \ 
    -Dversion=<version> \ 
    -Dpackaging=<type-of-packaging> \ 
    -Dfile=<path-to-file> \ 
    -Durl=<url-of-the-repository-to-deploy> 

Czy istnieje sposób włączenia tego do pliku pom? Jako plugin czy coś takiego?

+0

Co to jest JAR? Czy jest generowany przez kompilację Mavena? W jaki sposób? Z przykładu 'maven-assembly-plugin'? – Tunaki

+0

Nie, jar został zbudowany przy użyciu zwykłej kompilacji java. To nie jest projekt maven. – user171943

Odpowiedz

8

Pewnie. Po prostu zdefiniuj wykonanie celu maven-deploy-plugin:deploy-file powiązanego z fazą deploy skonfigurowaną z Twoimi wartościami. Podczas wdrażania projektu wykonanie to zostanie wywołane, a JAR zostanie wdrożony.

<plugin> 
    <artifactId>maven-deploy-plugin</artifactId> 
    <version>2.8.2</version> 
    <executions> 
     <execution> 
      <id>deploy-file</id> 
      <phase>deploy</phase> 
      <goals> 
       <goal>deploy-file</goal> 
      </goals> 
      <configuration> 
       <file><!-- path-to-file --></file> 
       <url><!-- url-of-the-repository-to-deploy --></url> 
       <groupId><!-- group-id --></groupId> 
       <artifactId><!-- artifact-id --></artifactId> 
       <version><!-- version --></version> 
       <packaging><!-- type-of-packaging --></packaging> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Pamiętaj, że prawdopodobnie będziesz musiał dodać również repositoryId. To jest identyfikator serwera do odwzorowania na <id> w sekcji <server> z settings.xml.

+0

Ale dlaczego nie działa, jeśli ' wdrożyć' został usunięty? –

+0

@ Jean-LouisJouannic Ponieważ wykonanie nie zostanie powiązane z fazą, więc nie zostanie domyślnie wykonane.Określenie ' wdrożyć ' umożliwia wykonanie tego wykonania po uruchomieniu 'mvn deploy'. – Tunaki

+0

Zgadzam się, ale usunięcie ' wdrożyć' i wywołanie 'mvn deploy: deploy-file' powinno po prostu działać, czyż nie? Ale nie ma i nie rozumiem dlaczego. –

0

Możesz przesłać custom maven settings.xml do TeamCity, gdzie musisz określić dystrybucjęZarządzanie i serwer jak podano on this documentation page. Następnie, jeśli zmienisz swój krok budowania maven, aby użyć przesłanych ustawień, wdrożenie zostanie wykonane przez proste dodanie garaźu wdrażania do zestawu wykonanych celów w tym kroku.

+0

Mam już niestandardowy plik settings.xml, w którym określam ustawienia serwera i serwera proxy itp., Ale w jaki sposób dołączyć wdrożenie: mojo jako plik instalacyjny jako krok? – user171943

+0

Jeśli umieścisz tag distributionManagement w pliku settings.xml lub pom.xml, nie musisz uruchamiać deploy: wdrożyć docelowy plik. Stwórz krok maven build, użyj swojego pliku settings.xml i dodaj "wdrażanie" do celów. –

0

Sekcja Working with Maven w podręczniku Artifactory szczegółowo omawia ten temat, w szczególności część o numerze deploying artifacts.
Dodatkowo można obejrzeć screencast o numerze setting Artifactory as a Maven repository.

Aby rozmieścić artefakty kompilacji za pomocą Artifactory, musisz dodać element distributionManagement do pliku pom pom z adresem docelowego lokalnego repozytorium, do którego chcesz rozmieścić artefakty. Ponadto będziesz musiał uzyskać dane uwierzytelniające serwera Artifactory w pliku settings.xml.
Artifactory może pomóc w wygenerowaniu zarówno kodu dystrybucyjnego SearchManagement, jak i pliku settings.xml (więcej informacji można znaleźć w linkach podanych powyżej).

0

Osobiście nie sądzę, że deklarowanie go w POM jest dobrym podejściem. Na przykład, jeśli masz wielomodułowy projekt Maven składający się z POM dzieci dziedziczących z nadrzędnego POM/super POM i niestandardowy jar do przesłania jest zawarty tylko w 1 modułu podrzędnego, to musisz jawnie zadeklarować konfigurację w rodzic POM (od mvn deploy jest zwykle używany do wykonywania superpom) i deklaruje każde inne potomne POM, aby pominąć wykonanie konfiguracji, która zaśmiesza strukturę POM.

Lepszym rozwiązaniem byłoby napisanie skryptu i powiązanie go z konfiguracjami uruchamiania z celem deploy, ponieważ cel deploy:deploy-file znajduje się na końcu cyklu życia kompilacji.

Powiązane problemy