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>
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 includeBaseDirectory>'), 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 outputDirectory> 'keine gute Idee). –
Tunaki
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
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