2010-12-10 50 views
0

J'ai actuellement deux descripteurs de montage avec deux exécutions pour mon projet qui génère des distributions du projet pour deux groupes différents:Comment inclure des expressions spécifiques d'exécution d'assembly Maven dans un fichier descripteur d'assembly?

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

Cela signifie que je dois maintenir deux ensembles de descripteurs, scripts shell, etc, que je veux pour éviter, mais je n'arrive pas à trouver un moyen d'obtenir une expression contenant l'ID d'exécution ou un autre paramètre de configuration unique à l'exécution pour le descripteur.

Je suppose que si l'expression est visible pour l'assembly, le plugin pourra également la substituer dans mes scripts shell pour consolider la construction en un descripteur d'assembly dist avec deux exécutions.

Quelqu'un peut-il suggérer une meilleure approche?

+0

Avez-vous jeté un coup d'oeil au filtrage? http://maven.apache.org/plugins/maven-assembly-plugin/examples/single/filtering-some-distribution-files.html avec cela vous pouvez configurer différents fichiers de propriétés dans les différentes exécutions ... (Jetez un oeil ici: https://github.com/khmarbaise/CIEnv/tree/master/hudson/cienv-proxy peut être cela aide.) – khmarbaise

+0

J'utilise des filtres à substituer dans le nom de fichier jar distribuable, et ils font certainement partie de la solution, mais j'ai aussi besoin du nom de fichier final, des noms de script shell de destination, etc. pour représenter l'exécution. Par exemple 'myclientapp' vs 'mydevapp'. C'est une application en ligne de commande et j'affiche différentes actions disponibles en fonction du type de distribution transmis sur un paramètre système. –

Répondre

0

Ce n'est pas la réponse totale, mais vous pouvez au moins améliorer cette situation en utilisant un descriptor component. Un composant descripteur est une partie d'un fichier descripteur d'assembly qui est destiné à être réutilisé parmi plusieurs descripteurs. Peut-être que, entre le filtrage et le composant descripteur, vous pouvez limiter la quantité d'éléments qui doivent aller dans chacun des fichiers du descripteur d'assembly.

+0

En fait, mes fichiers d'assemblage ne sont pas si complexes, je voulais éviter de dupliquer les scripts shell, car ils sont assez complexes. J'ai jeté un coup d'œil au code d'interpolation de l'assemblage: il n'y a aucun moyen d'y parvenir actuellement de la façon dont je l'ai imaginé, rien d'spécifique à l'interpolateur. –

+0

Pouvez-vous élaborer sur ce que sont ces scripts shell et ce qu'ils font? – HDave