2016-02-24 1 views
0

J'utilise maven-antrun-plugin pour décompresser un fichier jar dans un dossier. Ce fichier jar est généré dans chaque génération et possède une variante TIMESTAMP (comme dans l'extrait suivant). Comment puis-je décompresser le fichier jar dans un dossier portant le même nom que le fichier jar? Par exemple. Dossier doit être/sample_TIMESTAMP et non/dossierDécompressez jar dans un dossier portant le même nom que le fichier

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.7</version> 
    <executions> 
     <execution> 
      <id>unpack-jar-features</id> 
      <phase>install</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <target> 
        <echo message="unpack jar file" /> 
        <unzip dest="/folder"> 
         <fileset dir="/folder"> 
          <include name="sample_TIMESTAMP.jar" /> 
         </fileset> 
        </unzip> 
       </target> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+0

Comment ce fichier JAR est-il généré? Est-ce un artefact produit par la construction? Quelles sont ses coordonnées Maven? Car un bon moyen serait _not_ d'utiliser le 'maven-antrun-plugin' mais l'objectif' maven-dependency-plugin: unpack'. – Tunaki

+0

J'ai déjà essayé avec 'maven-dependency-plugin: unpack' mais le problème est que je voudrais déballer le pot spécifique et non celui extrait d'un repo M2. –

+0

Oui mais d'où vient ce pot spécifique? Comment est-il construit? Est-il construit à partir de votre projet, ce qui signifie que c'est un artefact supplémentaire? Avec un classificateur peut-être? – Tunaki

Répondre

1

Pour décompressez dans un nouveau répertoire, créez le répertoire avec <mkdir> puis changer le dest de <unzip> à sample_TIMESTAMP:

<mkdir dir="/sample_TIMESTAMP"/> 
<unzip dest="/sample_TIMESTAMP"> 
    <fileset dir="/folder"> 
     <include name="sample_TIMESTAMP.jar" /> 
    </fileset> 
</unzip> 

Vous pouvez utiliser <pathconvert> pour créer une propriété avec le nom du fichier JAR:

<fileset id="my-jar-file" dir="/folder"> 
    <include name="sample_*.jar"/> 
</fileset> 
<pathconvert property="my-jar-file-name"> 
    <chainedmapper> 
     <flattenmapper/> 
     <globmapper from="*.jar" to="*"/> 
    </chainedmapper> 
    <path> 
     <fileset refid="my-jar-file"/> 
    </path> 
</pathconvert> 
<mkdir dir="/${my-jar-file-name}"/> 
<unzip dest="/${my-jar-file-name}"> 
    <fileset refid="my-jar-file"/> 
</unzip> 

Si le my-jar-file<fileset> peut correspondre à plusieurs fichiers JAR, utilisez <restrict> pour limiter la correspondance à un seul fichier.

+0

Comment assigner value = "sample_TIMESTAMP" à partir d'un nom de fichier jar qui change dans chaque build? Par exemple. il peut s'agir de 'sample_20160224.jar' ou de' sample_20160223.jar' etc. –

+0

@GeorgiosStathis J'ai édité ma réponse pour montrer comment '' peut être utilisé pour extraire des parties du nom de fichier JAR. –

+0

Parfait! Le '' était exactement ce dont j'avais besoin! Merci beaucoup! –