toogle sidebar button

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.