webentwicklung-frage-antwort-db.com.de

Entfernen oder Löschen von Ressourcendateien aus dem Zielverzeichnis mithilfe der POM-Datei

Ich habe zwei Profile in pom.xml, und ich habe einige Ressourcendateien, die ich dem Zielressourcenverzeichnis hinzugefügt habe: ${project.build.outputDirectory}/resources während der Ausführung des ersten Profils. Ich muss diese Ressourcendateien während der Ausführung des zweiten Profils entfernen. Gibt es eine Möglichkeit, vorhandene Dateien aus dem Zielverzeichnis zu entfernen oder zu löschen? 

28
Kaustubh Najan

Ich habe die Lösung bekommen .. !!

<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>

als Referenz - http://maven.Apache.org/guides/mini/guide-building-for-different-environments.html

30
Kaustubh Najan

Ich stimme Matthews Beobachtungen zu, aber ich hatte den Eindruck, dass das ursprüngliche Poster gefragt wurde, wie die Ausführung von clean während der (normalen) "Ausführung" eines Profils automatisiert werden sollte.

Sie können eine Plugin-Ausführung für das Maven Clean Plugin definieren. Normalerweise ist es nur an clean gebunden, aber durch die Definition einer Plugin-Ausführung können Sie clean:clean (das ist das clean-Ziel des clean-Plugins) an eine beliebige - Lifecycle-Phase an die Sie wollen. Die Dokumentation des Maven Clean Plugins enthält ein Beispiel wie das gemacht wird. Die Dokumentation hat auch ein Beispiel das Löschen zusätzlicher Dateien. Zusammengenommen sieht das zwei so aus:

  <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>
28
Sander Verhagen

mvn clean entfernt das target-Verzeichnis (und damit alle darin enthaltenen Dateien). Wenn Sie nur bestimmte Dateien aus dem Verzeichnis target entfernen möchten, eine Kombination aus:

  • excludeDefaultDirectories, um zu verhindern, dass das gesamte Verzeichnis gelöscht wird, und 

  • filesets, um anzugeben, was gelöscht werden soll

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

14

Lösung mit 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>
7

danke an obige antworten. Endlich kam ich zu etwas wie:

wenn Sie Verzeichnisse im Zielordner j (ust deletesome erstellen möchten, müssen Sie ein solches Konstrukt erstellen.
Dies löscht zum Beispiel nur den gesamten Inhalt von Ordnern:

  • ziel/auspacken
  • gen-external-apklibs

excludeDefaultDirectories erlaubt es, n den gesamten Zielordner nicht zu löschen.
Ich habe es verwendet, um den Zielordner vor der Flusenanalyse zu bereinigen.

       <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>
3
cV2

Ich brauchte nur ein paar Dateien, die aus dem Ausgabeverzeichnis gelöscht wurden. Folgende Funktionen funktionierten gut für mich.

<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>

Ich habe auch gedacht, dass Sie hier beliebige Ant-Befehle ausführen können, um die Aufgabe zu ersetzen, die Sie zwischen dem <tasks> .... </tasks> benötigen, und es wird funktionieren. 

Liste der Ameisenaufgaben, die Sie ausführen können, sind hier

Ref: http://maven.Apache.org/plugins/maven-antrun-plugin/usage.html

1
Zeus