Frage

Wir verwenden Hudson und die Maven-release-Plugin das zu tun Release-Builds. Jetzt habe ich ein Projekt, das enthält eine Montage dass fasst alle benötigten Komponenten und dann verpackt sie in ein tar.gz-Paket mit der gewünschten Verzeichnisstruktur.

Nun ist ich versucht, das Release-Plugin einsetzen, dieses Paket zu unserer Maven-Repository während der Freigabe zu erhalten. Führen Ziel, sondern nur die Standard-Sachen (Quellen, javadoc, POM) werden eingesetzt,

Ich habe bereits die Montage Ziel der Maven-Paket Phase gebunden, und die .tar.gz bekommt Build während der Release, aber nicht in das Repository hochgeladen. Irgendwelche Hinweise, was ich falsch mache hier?

Hier ist die Montage-Plugin-Konfiguration:

<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>

Der Befehl Ich betreibe ein Release zu bauen, ist

mvn release:prepare release:perform release:clean
War es hilfreich?

Lösung

Unterdessen fand ich 2 Möglichkeiten zu tun, was ich wollte.

Maven-Build-Helfer-Plugin ermöglicht es auf die Liste der Artefakte zusätzliche Einträge hinzufügen, die bereitgestellt werden sollen:

    <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>

Die andere ist so einfach wie es nur geht und jemand auf der Maven-User-Mailingliste hat darauf hingewiesen. Einfache Verwendung der Montage: einziges Ziel statt asssembly: Montage. Auf diese Weise das erzeugte Artefakt in das Repository während der Bereitstellungsphase hochgeladen wird.

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

Andere Tipps

Dateien Bereitstellen ist nicht Bestandteil der Release-Plugin, aber die deploy-Plugin (Release bereitstellt nicht Zeug überall von selbst, aber Sie können die deploy-Plugin konfigurieren während einer Veröffentlichung genannt werden).

Normalerweise wird die deploy-Plugin alle Artefakte auf die Remote-Repository bereitstellen, sondern Baugruppen sind keine Artefakte; Maven kann nicht verwendet werden tar.gz-Archiv in seinem Repository in irgendeiner Weise, so dass es keinen Sinn macht, sich in erster Linie zu implementieren.

Wenn Sie nutzlose Dateien in das Repository kopieren bestehen, müssen Sie deploy:deploy-file verwenden ( Lesen sie die Dokumentation ) eine Datei manuell und konfigurieren sie das Plugin mit einer Ausführung zu implementieren es während der Freisetzung Schritt aufzurufen. Aber ich rate immer noch dagegen.

Was sind Sie wahrscheinlich auf der Suche nach ist eine Möglichkeit, ein irgendwo automatisch hochladen Montage. Ich bin mir nicht bewusst ein Plugin, das dies tut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top