·

Wydawanie aplikacji w formie zarchiwizowanej

Zautomatyzowane wydanie projektu w formie archiwum zip przy pomocy Mavena

Jednym z elementów cyklu życia projektu jest wydanie jego wersji. W zależności co tak na prawdę tworzymy efektem końcowym jest aplikacja gotowa do uruchomienia przez klienta, bądź biblioteka wykorzystywana w innych projektach. Oto czym się głównie charakteryzują:

  • aplikacja – posiada strukturę dostosowaną do projektu (jednakowa nazwa artefaktu np.: aplikacja.jar, zależności umieszczone w folderze lib, zasoby porozmieszczane w oddzielnych folderach np.: Pomoc, Img, Log, Raporty itp.), dokumentacja użytkownika, przykładowe pliki konfiguracyjne, dołączone jedynie binaria
  • biblioteka – ustandaryzowana struktura wydania (dobra konwencja), dołączenie binariów, bardzo często nie dołącza się zależności, przykłady, dokumentacja techniczna, strona site-ów wraz z wynikami testów, javadoc itp.

Oczywiście powyższy opis może odbiegać nawet znacząco od realiów panujących w waszej firmie, niemniej chodzi o to, że istnieją znaczące różnice w sposobach wydawania wersji.

W dniu dzisiejszym zajmiemy się tworzeniem archiwum zip, które będzie zawierało gotową do publikacji aplikację / bibliotekę. Do tego celu posłuży nam Maven w wersji 3.0.3. Już samo stosowanie Mavena wymusza w naszym projekcie usystematyzowaną strukturę. Dzięki temu łatwiej możemy otrzymać formę wynikową opracowaną i akceptowaną przez ogromne rzesze użytkowników. Pierwszym elementem jaki należy dodać odpowiedni plugin assembly:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
            <descriptors>
                <descriptor>src/main/assembly/bin.xml</descriptor>
            </descriptors>
        <finalName>${artifactId}</finalName>
    </configuration>
</plugin>

Definiujemy w nim ścieżkę deskryptora, czyli pliku w którym określimy co zostanie dołączone do archiwum. Gol assembly:assembly uruchamiający pakowanie powinien zostać wywołany po fazie build dzięki czemu w folderze target będziemy mieli już stworzoną pełną strukturę z której będziemy dysponowali skompilowanymi plikami, które możemy dołączać do archiwum.

Oczywiście następnym krokiem będzie stworzenie pliku src/main/assembly/bin.xml, który w naszym przypadku może wyglądać następująco:

<?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>bin</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeSiteDirectory>true</includeSiteDirectory>
    <fileSets>
        <fileSet>
            <includes>
                <include>Config.properties</include>
            <include>start.bat</include>
        </includes>
        </fileSet>
        <fileSet>
        <directory>target</directory>
        <outputDirectory>.</outputDirectory>
        <includes>
            <include>${artifactId}.jar</include>
        </includes>
        </fileSet>
        <fileSet>
            <directory>target/Pomoc</directory>
            <outputDirectory>Pomoc</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>target/Fonts</directory>
            <outputDirectory>Fonts</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>target/lib</directory>
            <outputDirectory>lib</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>

Więcej na temat możliwości archiwizowania można znaleźć tu.

Aby wygenerować plik zip należy wydać polecenie:

clean install site:site assembly:assembly

Jeżeli w pliku zip umieszczamy site to gol assembly musi zostać poprzedzony fazą generowania strony. Plik taki możemy umieścić na stronie firmowej, bądź na hostingu projekty typu code.google.com czy na github.com w dziale z plikami do pobrania.

Piotr Kosmowski • © 2026