Maven meilleure pratique pour créer un artefact zip ad hoc
Supposons que je dois gérer un artefact constitué d'une structure de dossier / fichier aribtrary enroulée en tant qu'archive zip. Il n'est pas clair pour moi comment accomplir cela dans Maven d'une manière qui correspond le mieux "à la manière Maven."
Je sais qu'il n'y a pas de type d'emballage "zip". Cela signifie-t-il qu'il n'y a pas de cycle de vie générique dans Maven pour simplement prendre ce que j'ai dans le dossier resources, le compresser et l'installer/le déployer dans mes dépôts?
Je cherche des options, avec les évaluations de la façon dont chaque option satisfait mon exigence de suivre la voie maven, car je ne souhaite pas encourir les sanctions évidentes de s'éloigner du chemin d'or . . .
2 réponses
Décidez quel Classificateur vous utiliserez pour votre fichier zip
, par souci d'argument disons que ce serait sample
.
Dans votre projet, créez le fichier assembly/sample.xml
Remplissez assembly/sample.xml
, avec quelque chose comme ceci:
<?xml version="1.0" encoding="UTF-8"?>
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
http://maven.apache.org/xsd/assembly-1.1.2.xsd"
>
<id>sample</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<outputDirectory>/</outputDirectory>
<directory>some/directory/in/your/project</directory>
</fileSet>
</fileSets>
<!-- use this section if you want to package dependencies -->
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<excludes>
<exclude>*:pom</exclude>
</excludes>
<useStrictFiltering>true</useStrictFiltering>
<useProjectArtifact>false</useProjectArtifact>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
</assembly>
Ajoutez ceci à la section build
de votre pom
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>create-distribution</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>assembly/sample.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Par conséquent, il devrait créer et installer you-project-name-VERSION-sample.zip
.
Je vous suggère de lire le chapitre sur les assemblages du livre Maven de Sonatype: https://books.sonatype.com/mvnref-book/reference/assemblies.html
Lire aussi la spécification du format d'Assemblage: http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
Remplir l'assemblage / l'échantillon.xml avec quelque chose comme ceci:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>install</id>
<baseDirectory>/</baseDirectory>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<includes>
<include>README*</include>
<include>*.sh</include>
</includes>
</fileSet>
<fileSet>
<directory>target/classes/</directory>
<outputDirectory>resources</outputDirectory>
<includes>
<include>*.properties</include>
<include>*.xml</include>
</includes>
<lineEnding>dos</lineEnding>
</fileSet>
<!--
<fileSet>
<directory>target/</directory>
<outputDirectory>lib</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
<lineEnding>dos</lineEnding>
</fileSet>
-->
</fileSets>
<!-- use this section if you want to package dependencies -->
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<excludes>
<exclude>*:pom</exclude>
</excludes>
<useStrictFiltering>true</useStrictFiltering>
<useProjectArtifact>true</useProjectArtifact>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
</assembly>
Ajouter les codes ci-dessous dans pom.fichier xml.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptor>assembly/sample.xml</descriptor>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Exécuter les commandes comme mvn package -P dev -Dmaven.test.skip
Va créer les fichiers zip qui incluent : xxxx.zip - lib / .pot -ressources/.xml/propriétés -Lisezmoi -start.sh