2010-12-10 4 views
0

Ich habe derzeit zwei Montage Deskriptoren mit zwei Ausführungen für mein Projekt, die Verteilungen des Projektes für zwei verschiedene Gruppen erzeugt:Wie schließe ich Maven-Assembly-Ausführungsspezifische Ausdrücke in eine Assembly-Deskriptordatei ein?

 <!-- Client distribution --> 
     <execution> 
     <id>client</id> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     <configuration> 
      <descriptors> 
      <descriptor>src/main/assembly/dist-client.xml</descriptor> 
      </descriptors> 
     </configuration> 
     </execution> 
     <!-- Developer distribution --> 
     <execution> 
     <id>developer</id> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     <configuration> 
      <descriptors> 
      <descriptor>src/main/assembly/dist-developer.xml</descriptor> 
      </descriptors> 
     </configuration> 
     </execution> 
    </executions> 

Das bedeutet, dass ich zwei Sätze von Deskriptoren zu pflegen, Shell-Skripten usw., die ich will zu vermeiden, aber ich finde keinen Weg, einen Ausdruck zu erhalten, der Ausführungs-ID oder einen anderen Konfigurationsparameter enthält, der für die Ausführung eindeutig ist.

Ich würde davon ausgehen, dass, wenn der Ausdruck für die Assembly sichtbar ist, das Plugin es auch in meine Shell-Scripts einfügen kann, um den Build in einem Dist-Assembly-Deskriptor mit zwei Ausführungen zu konsolidieren.

Kann jemand einen besseren Ansatz vorschlagen?

+0

Haben Sie sich die Filterung angesehen? http://maven.apache.org/plugins/maven-assembly-plugin/examples/single/filtering-some-distribution-files.html mit diesem können Sie verschiedene Eigenschaftendateien in den verschiedenen Ausführungen konfigurieren ... (Werfen Sie einen Blick hier: https://github.com/khmarbaise/CIEnv/tree/master/hudson/cienv-proxy kann das helfen.) – khmarbaise

+0

Ich benutze Filter, um im verteilbaren Jar-Dateinamen zu ersetzen, und sie sind definitiv ein Teil von die Lösung, aber ich brauche auch den endgültigen Dateinamen, die Ziel-Shell-Skript-Namen usw., um die Ausführung zu repräsentieren. Zum Beispiel 'myclientapp' vs 'mydevapp'. Es ist eine Befehlszeilen-App und ich zeige verschiedene verfügbare Aktionen abhängig von der Art der Verteilung an einen Systemparameter übergeben. –

Antwort

0

Es ist nicht die Gesamtantwort, aber Sie könnten diese Situation zumindest besser machen, indem Sie eine descriptor component verwenden. Eine Deskriptor-Komponente ist ein Teil einer Assembly-Deskriptordatei, die unter mehreren Deskriptoren wiederverwendet werden soll.

Möglicherweise können Sie zwischen der Filter- und der Deskriptor-Komponente die Anzahl der Elemente begrenzen, die in jede der Assembly-Deskriptor-Dateien gehen müssen.

+0

Eigentlich sind meine Assembly-Dateien nicht so komplex, ich wollte hauptsächlich vermeiden, die Shell-Skripte zu duplizieren, weil sie ziemlich komplex sind. Ich habe mir den Assembly-Interpolations-Code angeschaut: es gibt keine Möglichkeit, dies momentan so zu erreichen, wie ich es mir vorgestellt habe, nichts, was Ausführungs-spezifisch für den Interpolator ist. –

+0

Können Sie näher erläutern, was diese Shell-Skripte sind und was sie tun? – HDave

Verwandte Themen