2017-01-14 3 views
1

Ich möchte einige Dateien (jar, Start-Skripte, Dokumente) in ein Verzeichnis wie dist/ im Projekt root kopieren.Maven, wie man Dateien kopiert?

Ich verwende maven-assembly-plugin und set <configuration><outputDirectory> in pom.xml. Es erstellt Dateien in dist/ aber innerhalb <my_project>-<decsriptor_id>/ Unterverzeichnis.

Gibt es eine Möglichkeit, es nur im Stamm von dist/ auszugeben?

Oder gibt es ein Plugin in Maven, das einfach Dateien kopiert?

 <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>3.0.0</version> 
      <executions> 
       <execution> 
        <id>maven-assembly</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <outputDirectory>${project.basedir}/dist</outputDirectory> 
       <descriptors> 
        <descriptor>${project.basedir}/src/main/maven-assembly/dist.xml</descriptor> 
       </descriptors> 
      </configuration> 
     </plugin> 

dist.xml

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd"> 
    <id>dist</id> 
    <formats> 
     <format>dir</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <files> 
     <file> 
      <source>path........</source> 
      <fileMode>0755</fileMode> 
      <outputDirectory>.</outputDirectory> 
     </file> 
    </files> 
</assembly> 
+1

Sie das Plugin ein Verzeichnis mit ' dir' erstellen gesagt, also warum sind Sie überrascht zu haben es in der Ausgabe? Machen Sie eine ZIP und sehen Sie, dass es hier kein Basisverzeichnis gibt (weil ' false'), nur das Ergebnis des Formats. Was genau ist die Aufgabe, die du erfüllen willst? Und Dateien sollten niemals an einem anderen Ort als "target" erstellt werden (so ist $ {project.basedir}/dist 'keine gute Idee). – Tunaki

+0

nur für die Bequemlichkeit, um alle benötigten Dateien (von verschiedenen Orten) in einem Verzeichnis, und ohne alle anderen Sachen vom Ziel zu haben. Warum ist es keine gute Idee? – AlexP11223

+0

Einfach weil Ihr src-Ordner unter Versionskontrolle steht, was bedeutet, dass Sie ihn während des Builds mit generierten Dateien verschmutzen ... Standardmäßig sollte der Zielordner ausgeschlossen werden, so dass der Zielordner der Standard ist, um generierte Sachen zu enthalten (wie kompilierte Klassen, kompiliert) Tests usw. und für erstellte ZIP-Dateien oder JAR-Dateien) .... Das ist der Grund, warum es keine gute Idee ist ... – khmarbaise

Antwort

1

können Sie verwenden maven-resources-plugin:

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>3.0.2</version> 
    <executions> 
    <execution> 
    <id>copy-resources</id> 
    <!-- here the phase you need --> 
    <phase>validate</phase> 
    <goals> 
     <goal>copy-resources</goal> 
    </goals> 
    <configuration> 
     <outputDirectory>${basedir}/target/extra-resources</outputDirectory> 
     <resources>   
     <resource> 
     <directory>src/non-packaged-resources</directory> 
     <filtering>true</filtering> 
     </resource> 
     </resources>   
    </configuration>   
    </execution> 
    </executions> 
</plugin> 
Verwandte Themen