2013-09-05 13 views
19

Ho due profili in pom.xml e ho alcuni file di risorse che ho aggiunto nella directory delle risorse di destinazione: ${project.build.outputDirectory}/resources durante l'esecuzione del primo profilo. Quello che devo fare è rimuovere quei file di risorse durante l'esecuzione del secondo profilo. C'è un modo per rimuovere o eliminare i file esistenti dalla directory di destinazione?Rimuovere o eliminare file di risorse dalla directory di destinazione utilizzando il file pom

risposta

11

mvn clean rimuoverà la directory target (e quindi tutti i file in essa contenuti). Se si desidera rimuovere solo alcuni file dalla directory target, una combinazione di:

  • excludeDefaultDirectories per fermarlo di cancellare l'intera directory, e

  • filesets indicare cosa eliminare

ref: http://maven.apache.org/plugins/maven-clean-plugin/clean-mojo.html

21

sono d'accordo con observatio di Matthew ns, ma ho avuto l'impressione che il poster originale chiedesse come automatizzare l'esecuzione di clean durante la (normale) "esecuzione" di un profilo.

È possibile definire un plugin execution per il plug-in Maven Clean. Normalmente si limita a clean, ma definendo l'esecuzione di un plug-in è possibile associare clean:clean (ovvero l'obiettivo clean del plug-in clean) a qualsiasi lifecycle phase desiderato. La documentazione del plug-in Maven Clean ha an example su come eseguire questa operazione. La documentazione ha anche an example di eliminazione di file aggiuntivi. Unite i due aspetti:

<plugin> 
    <artifactId>maven-clean-plugin</artifactId> 
    <version>2.5</version> 
    <executions> 
     <execution> 
     <id>auto-clean</id> 
     <phase>initialize</phase> 
     <goals> 
      <goal>clean</goal> 
     </goals> 
     <configuration> 
     <filesets> 
      <fileset> 
       <directory>some/relative/path</directory> 
      </fileset> 
      </filesets> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
22

Ho ottenuto la soluzione .. !!

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-antrun-plugin</artifactId> 
<version>1.7</version> 
<executions> 
    <execution> 
     <phase>test</phase> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     <configuration> 
      <tasks> 
       <delete> 
        <fileset dir="${project.build.outputDirectory}/resources" includes="*.xml" /> 
       </delete> 
      </tasks> 
     </configuration> 
    </execution> 
</executions> 
</plugin> 

di rinvio - http://maven.apache.org/guides/mini/guide-building-for-different-environments.html

+0

Generalmente, in Maven, si preferisce una soluzione dichiarativa, nell'arco di soli codifica fuori (quali plugin per come Ant, Groovy , ecc.) lascia fare. –

2

grazie alle risposte di cui sopra. finalmente sono venuto a qualcosa di simile:

se si vuole j Ust eliminarealcuni directory nella cartella di destinazione, è necessario creare un certo costrutto come questo.
questo per esempio cancella solo tutti i contenuti delle cartelle:

  • target/decomprimere
  • generatori esterni-apklibs

excludeDefaultDirectories permette di n ot eliminare completa cartella di destinazione.
l'ho usato per pulire la cartella di destinazione prima dell'analisi del lint.

 <plugin> 
      <artifactId>maven-clean-plugin</artifactId> 
      <version>2.6</version> 
      <executions> 
       <execution> 
        <id>Deleting all unnecessary files before lint analysis</id> 
        <phase>verify</phase> 
        <goals> 
         <goal>clean</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <excludeDefaultDirectories>true</excludeDefaultDirectories> 
       <filesets> 
        <fileset> 
         <directory>target/unpack</directory> 
         <followSymlinks>false</followSymlinks> 
         <excludes> 
          <exclude>*</exclude> 
         </excludes> 
        </fileset> 
        <fileset> 
         <directory>gen-external-apklibs</directory> 
         <followSymlinks>false</followSymlinks> 
         <excludes> 
          <exclude>*</exclude> 
         </excludes> 
        </fileset> 
       </filesets> 
       <verbose>true</verbose> 
      </configuration> 
     </plugin> 
4

Soluzione con Apache Maven AntRun Plugin 1.8:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.8</version> 
    <executions> 
    <execution> 
     <phase>initialize</phase> 
     <goals> 
     <goal>run</goal> 
     </goals> 
     <configuration> 
     <target> 
      <delete 
      dir="${project.build.outputDirectory}/resources" 
      includeemptydirs="true"/> 
     </target> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
1

Ho solo bisogno di un paio di file eliminati dalla directory di output, la seguente ha funzionato bene per me.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.8</version> 
    <executions> 
     <execution> 
      <phase>compile</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <tasks> 
        <delete file="${project.build.outputDirectory}/appContextLocal.xml" /> 
        <delete 
         file="${project.build.outputDirectory}/appContextServer.xml" /> 
       </tasks> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

ho anche capito che è possibile eseguire qualsiasi comando di formiche qui sostituire ciò che mai attività che deve tra l'<tasks> .... </tasks> e funzionerà.

Elenco dei compiti formica che è possibile eseguire sono here

Rif: http://maven.apache.org/plugins/maven-antrun-plugin/usage.html

Problemi correlati