[JAVA] Qu'est-ce que l'assemblage Maven?

Rencontre soudain

Je l'ai soudainement rencontré au travail, je vais donc vous donner un bref aperçu.

Informations de référence Mave Assembly Plugin Maven tips

Qu'est-ce que l'assemblage Maven

Maven Assembly est un plug-in Maven que vous utilisez lorsque vous souhaitez créer un fichier d'archive à distribuer. Il semble que la méthode de création qui peut être spécifiée par défaut soit divisée en trois.

Commande d'assemblage par défaut

La commande d'exécution et le fichier créé sont les suivants.

bin


$ mvn assembly:assembly -DdescriptorId=bin

$ ls target
...
hello-world-1.0-SNAPSHOT-bin.tar.bz2
hello-world-1.0-SNAPSHOT-bin.tar.gz
hello-world-1.0-SNAPSHOT-bin.zip

jar-with-dependencies


$ mvn assembly:assembly -DdescriptorId=jar-with-dependencies

$ ls target
...
hello-world-1.0-SNAPSHOT-jar-with-dependencies.jar

src


$ mvn assembly:assembly -DdescriptorId=src

$ ls target
...
hello-world-1.0-SNAPSHOT-src.tar.bz2
hello-world-1.0-SNAPSHOT-src.tar.gz
hello-world-1.0-SNAPSHOT-src.zip

Exécuter à partir de pom.xml

Cela dit, il est difficile de taper de longues commandes à chaque fois, non? Vous pouvez spécifier une commande par défaut telle que bin pour descriptorRef spécifiée dans pom.xml. Dans l'exemple ci-dessous, l'archivage est effectué au moment du «package mvn».

pom.xml


<project>
...
  <build>
    ...
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>bin</descriptorRef>
          </descriptorRefs>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase> <!--Exécuter au package mvn-->
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    ...
</project>

Je veux créer ma propre archive

Bien sûr, vous pouvez également personnaliser ce que vous archivez. Dans ce cas, vous pouvez créer les paramètres d'archive dans un fichier xml distinct.

assembly.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>make-assembly</id>
  <formats>
    <format>tar.gz</format>
  </formats>
  <fileSets>
    <fileSet>
      <directory>target</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>*.jar</include>
      </includes>
    </fileSet>
  </fileSets>
  <dependencySets>
    <dependencySet>
      <unpack>false</unpack>
      <scope>runtime</scope>
      <outputDirectory>/</outputDirectory>
    </dependencySet>
  </dependencySets>
</assembly>

L'exécution du fichier d'assemblage d'origine uniquement est la suivante. Notez qu'il s'agit de «Ddescriptor» au lieu de «DdescriptorId». De plus, dans le cas d'une exécution indépendante, une erreur se produira si le plug-in d'assemblage est décrit dans pom.xml, donc si vous ne voulez essayer que cela, commentez le côté pom.xml.

$ mvn assembly:assembly -Ddescriptor=assembly/assembly.xml

Si vous voulez l'exécuter en tant qu'extension de pom.xml au lieu d'exécuter cette commande, vous pouvez l'utiliser en spécifiant le chemin du fichier dans descriptor dans configuration ci-dessous.

pom.xml


...
<configuration>
  <descriptors>
    <descriptor>src/assembly/src.xml</descriptor>
  </descriptors>
</configuration>
...

finalement

Si vous souhaitez en savoir plus, veuillez vous référer au site officiel que j'ai publié en premier pour diverses informations. Maven peut également être utilisé à Kotlin, il peut donc y avoir plus d'utilisations?

De plus, en essayant Maven Assembly cette fois, j'ai utilisé le projet d'exemple Maven de Kotlin de JetBrain ci-dessous. Non seulement Maven, mais aussi la version gradle est disponible, alors jetez un œil. Kotlin hello-world example with maven

Recommended Posts

Qu'est-ce que l'assemblage Maven?
Qu'est-ce que maven?
Qu'est-ce qui est nul? ]
Qu'est-ce que 'java
Qu'est-ce que Keycloak
Qu'est-ce que Jackson?
Qu'est-ce que soi
Qu'est-ce que Jenkins
Qu'est-ce que ArgumentMatcher?
Qu'est-ce que IM-Juggling?
Qu'est-ce que les paramètres
Qu'est-ce que SLF4J?
Qu'est-ce que la façade? ??
Qu'est-ce que Java <>?
Qu'est-ce que Gradle?
Qu'est-ce que POJO
Qu'est-ce que 'java
Qu'est-ce que centOS
Qu'est-ce que RubyGem?
Qu'est-ce que before_action?
Qu'est-ce que Docker
Qu'est-ce que Byte?
Qu'est-ce que Tomcat
Qu'est-ce que `docker-compose up`?
Qu'est-ce qu'un constructeur
Qu'est-ce que vue cli
Qu'est-ce qu'une interface
Qu'est-ce que le moi de Ruby?
Qu'est-ce que le codage en dur?
Qu'est-ce qu'un flux
Qu'est-ce que l'attr_accessor de Ruby?
Qu'est-ce que l'encapsulation Java?
Qu'est-ce qu'une permission refusée?
Qu'est-ce que le contrôle d'instance?
Qu'est-ce qu'un initialiseur?
Qu'est-ce que Spring Tools 4
Qu'est-ce qu'un opérateur?
Qu'est-ce que l'orientation objet?
Qu'est-ce que le @VisibleForTesting de Guava?
Qu'est-ce qu'un modèle MVC?
Qu'est-ce qu'une annotation?
Qu'est-ce que la technologie Java?
Qu'est-ce que Java API-java
Qu'est-ce que @ (variable d'instance)?
Qu'est-ce que l'artefact de Gradle?
Qu'est-ce que l'audit JPA?
[Java] Qu'est-ce que flatMap?
Qu'est-ce qu'un servlet?
Qu'est-ce que le développement Web?
[Java] Qu'est-ce que ArrayList?
Qu'est-ce que l'orientation objet après tout?
La version JDK par défaut de Maven est 1.5
Qu'est-ce que HttpSession session = request.getSession ();
Qu'est-ce que l'assertion Java? Résumé.