2012-06-22 1 views
5

Ho un requisito molto specifico della nostra infrastruttura di compilazione per copiare alcuni contenuti di un'altra dipendenza JAR in una sottocartella specifica della mia applicazione web. Stiamo usando maven-assembly-plugin, e un modo naturale per farlo è usare <dependencySet> insieme a <unpackOptions>.Maven Assembly - copia solo file dalla sottocartella durante l'estrazione dall'archivio

L'esempio di codice (nel descrittore di montaggio) Ho sguardi come segue:

<dependencySet> 
     <unpack>true</unpack> 
     <scope>runtime</scope> 
     <useProjectArtifact>false</useProjectArtifact> 
     <includes> 
      <include>my.group:artifact:jar</include> 
     </includes> 
     <unpackOptions> 
      <includes> 
       <include>subfolder/config.xml</include> 
      </includes> 
     </unpackOptions> 
     <outputDirectory>WEB-INF/otherfolder</outputDirectory> 
    </dependencySet> 

Il problema è che io non riesco a capire come specificare che voglio solo copiare solo un singolo file artifact.jar/subfolder/config.xml a un obiettivo WEB-INF/otherfolder. Il risultato effettivo è WEB-INF/otherfolder/subfolder/config.xml. Come puoi vedere, /subfolder viene aggiunto al percorso finale. Esiste un modo per modificare l'espressione <include> in modo che /subfolder non venga aggiunto?

Grazie in anticipo!

+0

Hai provato a rimuovere l'altra cartella dall'outputDirectory? – khmarbaise

+0

@khmarbaise In tal caso otterrò WEB-INF/sottocartella/config.xml. Ma il risultato atteso è WEB-INF/otherfolder/config.xml –

+0

provare **/config.xml e vedere cosa succede .. – om39a

risposta

2

L'esplorazione attraverso la fonte rivela che ciò non è possibile tramite il plug-in maven-assembly. Ottiene tutti gli include specificati nel descrittore di assembly e quindi passa queste informazioni a Archiver Plexus che viene utilizzato attraverso più stadi. Anche i pattern di inclusione vengono passati all'archivio di Plexus, quindi ovviamente esegue la decompressione della struttura delle directory.

+0

Grazie per il feedback. – Puce

1

Avete mai pensato allo maven-dependency-plugin che ha un buon supporto per gli archivi di disimballaggio.

+0

Ho pensato e ripenserò ancora mentre pulirò gli script di compilazione. Ma, ad essere onesti, questa non è una risposta a una domanda. –

0

Come @khmarbaise indica, la soluzione sta nel combinare la dipendenza-plugin con il montaggio-plugin:

  • All'avvio fase pacchetto disimballaggio le dipendenze è necessario un po 'directory di destinazione
  • Il pacchetto (più avanti in pom) usa l'assembly per estrarre file specifici da quella directory nel tuo artefatto