Maven – come includere le directory vuote

Di default durante il processo di compilazione maven sta rimuovendo le directory vuote.
Sai se un parametro può essere specificato nel pom per indicare a maven di includere directory vuote nella cartella target / test-class generata?

Secondo questo ticket MRESOURCES-36 , dovrebbe esserci un elemento , ma solo per Maven Resources Plugin 2.3 .

  org.apache.maven.plugins maven-resources-plugin 2.3  true   

Per le versioni di Maven che includevano una versione precedente del plugin Risorse:

Fino a quando questo problema non sarà risolto, ecco una soluzione che ho utilizzato con successo.
Aggiungi questo elemento plugin in project/build/plugins nel tuo pom.xml e cambia la pom.xml nel task mkdir.

Puoi avere più elementi per più directory. L’attività mkdir non fa nulla se la directory è già stata copiata dal plugin delle risorse.

  org.apache.maven.plugins maven-antrun-plugin   create-empty-directory process-classs  run          

Originariamente proveniva da openejb-standalone pom.xml nel progetto openejb.

Perché hai bisogno di cartelle vuote nelle classi target / test?

D’altra parte è ansible utilizzare il plugin assembly per creare cartelle vuote nei file zip / tar.gz.

Basta creare una voce nel descrittore di assembly che fa riferimento a una cartella esistente (in questo caso src / main / resources / bin …

  src/main/resources/bin /logs 0755  *   

Quanto sopra funziona anche per file .tar.gz e zip. La directoryMode sopra è necessaria solo se crei file .tar.gz.

La seconda possibilità è quella di creare una cartella vuota nella struttura delle cartelle che è inclusa nel plugin di assemblaggio (come zip, tar.gz ecc.) … BTW: zip, tar.gz consente cartelle vuote.

Di solito abbiamo risolto questo problema includendo un file segnaposto vuoto in qualsiasi directory che dobbiamo creare ma che non ha contenuti utili al momento della compilazione.

Ciò ha anche il vantaggio che i formati di file (ad esempio i file zip) che non consentono il concetto di directory vuote creeranno comunque la giusta struttura di directory.

Ho usato l’Assembly Plugin come suggerito da khmarbaise, ma per farlo funzionare avevo bisogno di usare un’eccezione in stile Ant per assicurarmi che nessun file o directory si insinuasse nell’archivio:

  **/*  

Se non funziona, puoi utilizzare Maven Resources Plugin 2.7 .

   org.apache.maven.plugins maven-resources-plugin 2.7  true