22

Używamy Hudson i maven-release-plugin do tworzenia wersji. Teraz mam projekt, który zawiera assembly, który łączy wszystkie potrzebne komponenty, a następnie pakuje je do pakietu .tar.gz o pożądanej strukturze katalogów.Wdrażanie pakietu z wtyczką maven-release-

Teraz próbuję uzyskać wtyczkę release, aby wdrożyć ten pakiet do naszego repozytorium Maven podczas wydania: wykonaj cel, ale tylko standardowe elementy (źródła, javadoc, POM) są wdrożone.

Osadziłem już cel montażu w fazie pakietu maven, a .tar.gz pobiera kompilację podczas wydania, ale nie zostało przesłane do repozytorium. Jakieś wskazówki, co tu robię źle?

Oto konfiguracja montaż-plugin:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2-beta-4</version> 
    <configuration> 
     <descriptors> 
     <descriptor>src/main/assembly/distribution.xml</descriptor> 
     </descriptors> 
     <finalName>${pom.artifactId}-${pom.version}</finalName> 
     <appendAssemblyId>false</appendAssemblyId> 
     <tarLongFileMode>warn</tarLongFileMode> 
    </configuration> 
    <executions> 
     <execution> 
      <id>dist-assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>assembly</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Komenda biegnę zbudować wydanie jest

mvn release:prepare release:perform release:clean 
+0

Może jeśli pokażesz nam kod, lub kod zaciemniony może będziemy w stanie pomóc Ci – ant

Odpowiedz

33

Tymczasem znalazłem 2 sposoby robienia tego, co chciałem.

maven-build-pomocnik-plugin pozwala na dodanie dodatkowych wpisów na listę przedmiotów, które powinny być stosowane:

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.3</version> 
     <executions> 
      <execution> 
      <id>attach-distribution</id> 
      <phase>package</phase> 
      <goals> 
       <goal>attach-artifact</goal> 
      </goals> 
      <configuration> 
       <artifacts> 
       <artifact> 
        <file>target/${pom.artifactId}-${pom.version}.tar.gz</file> 
        <type>tar.gz</type> 
       </artifact> 
       </artifacts> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 

drugi jest tak proste, jak to się robi, a ktoś na dyskusyjnej Maven użytkowników wskazałem to. Proste użycie zestawu: pojedynczy cel zamiast zestawu: montaż. W ten sposób wygenerowany artefakt jest przesyłany do repozytorium podczas fazy wdrażania.

<execution> 
     <id>dist-assembly</id> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> <!-- that's all :) --> 
     </goals> 
    </execution> 
+0

Wstydź wtyczkę nie pozwala na ponowne zdefiniowanie identyfikatora artefaktu – Adam

1

Wdrażanie plików nie jest częścią uwolnienia plugin ale wtyczki deploy (release nie rozmieszcza nic w pojedynkę, ale możesz skonfigurować wtyczkę wdrażania, która będzie wywoływana podczas wydania).

Zwykle plugin wdrażania wdroży wszystkie artefakty do zdalnego repozytorium, ale zespoły nie są artefaktami; Maven nie może w żaden sposób korzystać z archiwów .tar.gz w swoim repozytorium, więc nie ma sensu instalować ich w pierwszej kolejności.

Jeśli chcesz skopiować niepotrzebne pliki do repozytorium, musisz użyć pliku deploy:deploy-file (see the docs) w celu ręcznego wdrożenia pliku i skonfigurowania wtyczki z wykonaniem, aby wywołać ją w kroku wydania. Ale wciąż odradzam.

To, czego prawdopodobnie szukasz, to sposób automatycznego przeniesienia zespołu. Nie jestem świadomy wtyczki, która to robi.

+0

Thx, że było tak, jak było w tej chwili, choć nie mam go teraz pracuje. Ale według wszystkich informacji, które znalazłem wydaje się być (tylko?) Sposobem, aby przesłać pliki .tar.gz do repozytorium. –

+0

Ponowne naleganie na kopiowanie niepotrzebnych plików do repo - maven nie jest jedynym narzędziem do korzystania z repozytorium. Pliki * .tar.gz są używane przez wiele innych narzędzi do pakowania, np. apt, marionetka itp. – Adam

+0

@Adam, ale te narzędzia mają swoje własne repozytoria i często nie mogą korzystać z repozytoriów Maven. Więc byłoby sensowne, aby przesłać do repozytorium marionetek, ale nie do repozytorium Maven. –