0

Ich habe eine Aufgabe, alle in der pom.xml genannten Gläser zu entpacken und dann den entpackten Inhalt in ein einziges Glas zu gießen. Ich kann dies tun, indem ich das Entpackungs-Abhängigkeitsziel des Abhängigkeits-Plugins und des JAR-Plugins verwende. Nachdem ich jedoch das neue jar erzeugt habe, möchte ich den Ordner löschen, der nach dem Entpacken erstellt wurde. Ich verwende das folgende Code-Snippet in meiner pom.xml (Bitte lesen Sie die Kommentare über jedem Plugin).Wie entferne ich am Ende des Builds ein bestimmtes Verzeichnis aus dem Zielverzeichnis des Maven?

<build> 
    <plugins> 
    <!-- This part of the code is used to unpack all the dependencies mentioned in my pom.xml --> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <version>2.10</version> 
     <executions> 
      <execution> 
      <id>unpack-dependencies</id> 
      <phase>package</phase> 
      <goals> 
       <goal>unpack-dependencies</goal> 
      </goals> 
      <configuration> 
       <includes>**/*.class</includes> 
       <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory> 
       <overWriteReleases>false</overWriteReleases> 
       <overWriteSnapshots>true</overWriteSnapshots> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 

     <!-- This part of the code is used for creating a jar with all the contents of the "alternateLocation" directory above --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.4</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
        <configuration> 
         <classesDirectory>${project.build.directory}/alternateLocation</classesDirectory> 
         <outputDirectory>${project.build.directory}</outputDirectory> 
         <finalName>abc</finalName> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

     <!-- I am using this part of the code to delete the "alternateLocation" after everything is done, but it deletes the target directory instead --> 
     <plugin> 
      <artifactId>maven-clean-plugin</artifactId> 
      <version>3.0.0</version> 
      <executions> 
       <execution> 
        <id>auto-clean</id> 
        <phase>install</phase> 
        <goals> 
         <goal>clean</goal> 
        </goals> 
        <configuration> 
         <filesets> 
          <fileset> 
           <directory>${project.build.directory}/alternateLocation</directory> 
          </fileset> 
         </filesets> 
         <excludeDefaultDirectories>${project.build.directory}</excludeDefaultDirectories> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
    </build> 

Das cleane Plugin löscht grundsätzlich das Zielverzeichnis. Also wie kann ich den "alternateLocation" Ordner aus dem Zielverzeichnis am Ende des Builds löschen. (Ich denke, Sie können es mit dem Maven-Antrun-Plugin tun, aber ich möchte dieses Plugin nicht verwenden.).

Antwort

0

können Sie löste das Problem, indem Sie die maven-assembly-plugin über den vordefinierten Descriptor jar-with-dependencies unter Verwendung der durch die folgende getan werden kann:

<project> 
    [...] 
    <build> 
    [...] 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.6</version> 
     <configuration> 
      <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
     </configuration> 
     <executions> 
      <execution> 
      <id>make-assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     [...] 
</project> 

als Sie nicht zusätzliche Konfiguration brauchen.