Java >> Java tutorial >  >> Tag >> maven

Oprettelse af en kørebar binær distribution med Maven Assembly Plugin

Der er mange måder, vi kan bruge, når vi vil dele vores applikationer med andre mennesker. For eksempel kan vi oprette en binær distribution, som kan downloades fra vores hjemmeside.

Dette blogindlæg beskriver, hvordan vi kan oprette en kørebar binær distribution ved at bruge Maven Assembly Plugin.

Kravene til vores binære distribution er:

  • Jar-filen, der indeholder klasserne i vores eksempelapplikation, skal kopieres til rodmappen for den binære distribution.
  • Manifestet for den oprettede jar-fil skal konfigurere klassestien og hovedklassen for vores applikation.
  • Afhængighederne af vores applikation skal kopieres til lib bibliotek.
  • Opstartsscripts for vores applikation skal kopieres til rodmappen for den binære distribution.

Lad os starte med at tage et hurtigt kig på vores eksempelapplikation.

Eksempelapplikationen

Eksempelapplikationen af ​​dette blogindlæg har kun én klasse, der skriver strengen 'Hello World!' til loggen ved at bruge Log4j. Kildekoden til HelloWorldApp klasse ser ud som følger:

import org.apache.log4j.Logger;

public class HelloWorldApp
{
    private static Logger LOGGER = Logger.getLogger(HelloWorldApp.class);

    public static void main( String[] args )
    {
        LOGGER.info("Hello World!");
    }
}

Egenskabsfilen, der konfigurerer Log4j, hedder log4j.properties , og den findes fra src/main/resources vejviser. Vores log4j.properties fil ser ud som følger:

log4j.rootLogger=DEBUG, R

log4j.appender.R=org.apache.log4j.ConsoleAppender

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

Opstartsscripts for vores eksempelapplikation findes fra src/main/scripts vejviser. Denne mappe indeholder opstartsscripts til Windows- og *nix-operativsystemerne.

Lad os gå videre og finde ud af, hvordan vi kan oprette en jar-fil, der konfigurerer klassestien og hovedklassen i vores eksempelapplikation.

Oprettelse af Jar-filen

Vi kan pakke vores applikation ind i en jar-fil ved at bruge Maven Jar Plugin. Vi kan konfigurere Maven Jar Plugin ved at følge disse trin:

  1. Sørg for, at klassestien til vores eksempelapplikation føjes til den oprettede manifestfil.
  2. Specificer, at alle afhængigheder af vores applikation findes fra biblioteket lib.
  3. Konfigurer hovedklassen for vores eksempelapplikation.

Konfigurationen af ​​Maven Jar Plugin ser ud som følger:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <!-- Configures the created archive -->
        <archive>
            <!-- Configures the content of the created manifest -->
            <manifest>
                <!-- Adds the classpath to the created manifest -->
                <addClasspath>true</addClasspath>
                <!--
                    Specifies that all dependencies of our application are found
                    from the lib directory.
                -->
                <classpathPrefix>lib/</classpathPrefix>
                <!-- Configures the main class of the application -->
                <mainClass>net.petrikainulainen.mavenassemblyplugin.HelloWorldApp</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

Lad os gå videre og finde ud af, hvordan vi kan samle den binære distribution af vores eksempelapplikation.

Samling af den binære distribution

Vi kan samle vores binære distribution ved at bruge Maven Assembly Plugin. Hvis vi ønsker at skabe en binær distribution, der opfylder vores krav, skal vi følge disse trin:

  1. Opret en assembly descriptor, der dikterer udførelsen af ​​Maven Assembly Plugin.
  2. Konfigurer Maven Assembly Plugin til at bruge den oprettede assembly descriptor.

Først , har vi oprettet en assembly descriptor, der dikterer udførelsen af ​​Maven Assembly Plugin. Vi kan oprette denne samlingsbeskrivelse ved at følge disse trin:

  1. Opret en assembly.xml fil til src/assembly bibliotek.
  2. Konfigurer formatet for vores binære distribution. Sørg for, at der oprettes en zip-fil.
  3. Kopiér afhængighederne af vores applikation til lib bibliotek.
  4. Kopiér opstartsscripts for vores applikation fra src/main/scripts mappe til rodmappen for den binære distribution.
  5. Kopiér jar-filen for vores eksempelapplikation fra målet mappe til rodmappen for den binære distribution.

Vores samlingsbeskrivelse ser ud som følger:

<assembly>
    <id>bin</id>
    <!-- Specifies that our binary distribution is a zip package -->
    <formats>
        <format>zip</format>
    </formats>

    <!-- Adds the dependencies of our application to the lib directory -->
    <dependencySets>
        <dependencySet>
            <!--
                Project artifact is not copied under library directory since
                it is added to the root directory of the zip package.
            -->
            <useProjectArtifact>false</useProjectArtifact>
            <outputDirectory>lib</outputDirectory>
            <unpack>false</unpack>
        </dependencySet>
    </dependencySets>

    <fileSets>
        <!--
            Adds startup scripts to the root directory of zip package. The startup
            scripts are copied from the src/main/scripts directory.
        -->
        <fileSet>
            <directory>${project.build.scriptSourceDirectory}</directory>
            <outputDirectory></outputDirectory>
            <includes>
                <include>startup.*</include>
            </includes>
        </fileSet>
        <!--
            Adds the jar file of our example application to the root directory
            of the created zip package.
        -->
        <fileSet>
            <directory>${project.build.directory}</directory>
            <outputDirectory></outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

Anden , skal vi konfigurere Maven Assembly Plugin til at bruge den assembly descriptor, som vi oprettede i trin et. Vi kan gøre dette ved at tilføje følgende plugin-erklæring til plugins sektion af vores POM-fil:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <!-- Configures the used assembly descriptor -->
        <descriptors>
            <descriptor>src/main/assembly/assembly.xml</descriptor>
        </descriptors>
    </configuration>
</plugin>

Vi har nu konfigureret Maven Assembly Plugin til at skabe vores binære distribution. Lad os gå videre og finde ud af, hvad det egentlig betyder.

Hvad har vi lige gjort?

Vi kan oprette vores binære distribution ved at køre kommandoen mvn clean package assembly:single ved kommandoprompten. Når vi har gjort dette, opretter Maven maven-assembly-plugin-bin.zip fil til målet vejviser. Denne zip-pakke er den binære distribution af vores eksempelapplikation.

Når vi kører kommandoen unzip maven-assembly-plugin-bin.zip ved kommandoprompten, maven-assembly-plugin-bin mappen oprettes til målet vejviser. Indholdet af den oprettede mappe er beskrevet i det følgende:

  • maven-assembly-plugin-bin biblioteket indeholder jar-filen for vores eksempelapplikation og opstartsscripts.
  • maven-assembly-plugin-bin/lib biblioteket indeholder log4j-1.2.16.jar fil.

Vi kan køre vores eksempelapplikationsapplikation ved at bruge opstartsscripts fundet fra maven-assembly-plugin-bin vejviser. Når vi kører vores applikation, ser vi følgende output:

$ ./startup.sh 
0    [main] INFO  net.petrikainulainen.mavenassemblyplugin.HelloWorldApp  - Hello World!  

Lad os gå videre og opsummere, hvad vi lærte af dette blogindlæg.

Oversigt

Denne blog har lært os to ting:

  • Vi kan tilpasse manifestet af den oprettede jar-fil ved at bruge Maven Jar-plugin.
  • Vi kan oprette en binær distribution, som ikke bruger den såkaldte "fat jar"-tilgang, ved at bruge Maven Assembly plugin.

Java tag