2010-03-04 5 views
6

Sto trovando un modo come copiare qualsiasi file sul mio server web usando Maven. Ho un progetto di maven che contiene un insieme di html, js, proprietà e file di configurazione.Come decomprimere gli artefatti e filtrare le risorse?

Vorrei mettere in valigia le mie cose e distribuirle nel repository. Dopo di ciò in un altro progetto di Maven vorrei decomprimere i file da artefatto, filtrare le risorse e copiare nelle cartelle specificanti sul server.

Qual è il modo migliore per farlo?

maven-dependency-plugin può decomprimere artefatto ma non ho trovato come utilizzare il filtro risorse in questo caso e come specificare diverse directory di output.

risposta

1

Vorrei creare tutte le distribuzioni necessarie utilizzando lo maven assembly plugin e utilizzare filteringin tempo di assemblaggio. È quindi possibile distribuire questi assembly in un repository e, in effetti, utilizzare il plug-in Maven dependency per recuperare e decomprimere un assembly da un determinato computer. Ulteriori informazioni sugli assiemi nel Chapter 8. Maven Assemblies del libro di Sonatype.

Aggiornamento: Un'alternativa se non si desidera distribuire assemblee "filtrati" potrebbe essere quella di creare l'assembly dal macchina mirata (ancora utilizzando profili e filtraggio come suggerito). La distribuzione creata conterrà il contenuto giusto nelle cartelle giuste (è possibile farlo con gli assembly) e si dovrà semplicemente decomprimere l'archivio per l'ultimo passaggio.

+0

Suppongo che non sia una buona idea archiviare gli artefatti filtrati del repository. Il filtraggio è una cosa specifica per l'ambiente. – eugenn

+0

@eugenn Qual è il problema con la memorizzazione di risorse "filtrate" o di risorse specifiche dell'ambiente? Questo in realtà accade molto, specialmente con distribuzioni che possono essere specifiche della piattaforma (questo è un esempio banale ma un .zip o un .tar.gz possono usare caratteri di fine riga diversi). Gli artefatti non filtrati sono comunque inutili. –

+0

Ad esempio, ho una dozzina di ambienti per la distribuzione della mia app. Se applicassi il filtro per qualsiasi artefatto in fase di costruzione, dovessi distribuire in un repository dozzine di artefatti diversi. Oppure posso mantenere una versione "non filtrata" (raw) nel repository e utilizzare il filtro, quindi produco solo un'app finale. Mi piacerebbe poter generare artefatti "non classificati" in un progetto (va bene) e produrre, personalizzare l'applicazione finale nel secondo progetto. Il secondo progetto dovrebbe rimuovere i segnaposto dagli artefatti generati nel primo progetto. – eugenn