b'\n_START_ARTICLE_\nApache Maven\n_START_PARAGRAPH_\nApache Maven - narz\xc4\x99dzie automatyzuj\xc4\x85ce budow\xc4\x99 oprogramowania na platform\xc4\x99 Java. Poszczeg\xc3\xb3lne funkcje Mavena realizowane s\xc4\x85 poprzez wtyczki, kt\xc3\xb3re s\xc4\x85 automatycznie pobierane przy ich pierwszym wykorzystaniu. Plik okre\xc5\x9blaj\xc4\x85cy spos\xc3\xb3b budowy aplikacji nosi nazw\xc4\x99 POM-u (ang. Project Object Model). Maven wywodzi si\xc4\x99 z projektu Jakarta. Tak jak i inne produkty fundacji Apache, Maven jest rozprowadzany na licencji Apache License.\n_START_SECTION_\nCele\n_START_PARAGRAPH_\nBudowanie oprogramowania ma zako\xc5\x84czy\xc4\x87 si\xc4\x99 osi\xc4\x85gni\xc4\x99ciem wybranego przez buduj\xc4\x85cego celu. Dost\xc4\x99pnych cel\xc3\xb3w jest wiele. Pula cel\xc3\xb3w nie jest bezpo\xc5\x9brednio okre\xc5\x9blona przez tw\xc3\xb3rc\xc4\x99 POM-a, tak jak ma to miejsce w przypadku Anta lub Make\'a, lecz przez wtyczki rozszerzaj\xc4\x85ce funkcjonalno\xc5\x9b\xc4\x87 Mavena. Poszczeg\xc3\xb3lne cele mog\xc4\x85 wymaga\xc4\x87 wcze\xc5\x9bniejszej realizacji innych cel\xc3\xb3w, np. cel package (zbudowanie paczki dystrybucyjnej) wymaga uprzedniej realizacji compile (kompilacja kod\xc3\xb3w \xc5\xbar\xc3\xb3d\xc5\x82owych) oraz test (uruchomienie test\xc3\xb3w automatycznych).\n_START_SECTION_\nPOM\n_START_PARAGRAPH_\nPOM, czyli Project Object Model, to dokument XML-owy kompleksowo opisuj\xc4\x85cy projekt. POM nie tylko precyzuje szczeg\xc3\xb3\xc5\x82y budowy produktu, ale te\xc5\xbc mo\xc5\xbce przechowywa\xc4\x87 informacje o zespole programist\xc3\xb3w, zastosowanych systemach wspomagaj\xc4\x85cych rozw\xc3\xb3j oprogramowania itd. W Mavenie dokument POM nosi nazw\xc4\x99 pom.xml.\n_START_SECTION_\nPrzyk\xc5\x82adowy POM\n_START_PARAGRAPH_\n<project>_NEWLINE_  <modelVersion>4.0.0</modelVersion>_NEWLINE__NEWLINE_  <!-- Podstawowe informacje dla Mavena -->_NEWLINE_  <groupId>...</groupId>_NEWLINE_  <artifactId>...</artifactId>_NEWLINE_  <version>...</version>_NEWLINE_  <packaging>...</packaging>_NEWLINE_  <dependencies>...</dependencies>_NEWLINE_  <parent>...</parent>_NEWLINE_  <dependencyManagement>...</dependencyManagement>_NEWLINE_  <modules>...</modules>_NEWLINE_  <properties>...</properties>_NEWLINE__NEWLINE_  <!-- Ustawienia budowania -->_NEWLINE_  <build>...</build>_NEWLINE_  _NEWLINE_  <!-- Ustawienia generowania strony HTML z dokumentacj\xc4\x85 i raportami -->_NEWLINE_  <reporting>...</reporting>_NEWLINE__NEWLINE_  <!-- Og\xc3\xb3lne informacje o projekcie -->_NEWLINE_  <name>...</name>_NEWLINE_  <description>...</description>_NEWLINE_  <url>...</url>_NEWLINE_  <inceptionYear>...</inceptionYear>_NEWLINE_  <licenses>...</licenses>_NEWLINE_  <organization>...</organization>_NEWLINE_  <developers>...</developers>_NEWLINE_  <contributors>...</contributors>_NEWLINE__NEWLINE_  <!-- Ustawienia \xc5\x9brodowiska tworzenia projektu -->_NEWLINE_  <issueManagement>...</issueManagement>_NEWLINE_  <ciManagement>...</ciManagement>_NEWLINE_  <mailingLists>...</mailingLists> _NEWLINE_  <scm>...</scm>_NEWLINE_  <prerequisites>...</prerequisites>_NEWLINE_  <repositories>...</repositories>_NEWLINE_  <pluginRepositories>...</pluginRepositories>_NEWLINE_  <distributionManagement>...</distributionManagement>_NEWLINE_  <profiles>...</profiles></project>\n_START_SECTION_\nTworzenie POM-a\n_START_PARAGRAPH_\nProgramista mo\xc5\xbce napisa\xc4\x87 POM-a samodzielnie od podstaw, pro\xc5\x9bciej jednak u\xc5\xbcy\xc4\x87 Mavena, kt\xc3\xb3ry potrafi wygenerowa\xc4\x87 prostego POM-a samodzielnie:_NEWLINE_mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.mycompany.app -DartifactId=my-app_NEWLINE_W rezultacie powstanie nast\xc4\x99puj\xc4\x85cy POM:_NEWLINE_<project xmlns="http://maven.apache.org/POM/4.0.0"_NEWLINE_  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"_NEWLINE_  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0                      http://maven.apache.org/xsd/maven-4.0.0.xsd">_NEWLINE_  <modelVersion>4.0.0</modelVersion>_NEWLINE_  <groupId>com.mycompany.app</groupId>_NEWLINE_  <artifactId>my-app</artifactId>_NEWLINE_  <packaging>jar</packaging>_NEWLINE_  <version>1.0-SNAPSHOT</version>_NEWLINE_  <name>Maven Quick Start Archetype</name>_NEWLINE_  <url>http://maven.apache.org</url>_NEWLINE_  <dependencies>_NEWLINE_    <dependency>_NEWLINE_      <groupId>junit</groupId>_NEWLINE_      <artifactId>junit</artifactId>_NEWLINE_      <version>3.8.1</version>_NEWLINE_      <scope>test</scope>_NEWLINE_    </dependency>_NEWLINE_  </dependencies></project>\n_START_SECTION_\nWtyczki\n_START_PARAGRAPH_\nWi\xc4\x99kszo\xc5\x9b\xc4\x87 funkcji Mavena dost\xc4\x99pna jest za po\xc5\x9brednictwem wtyczek. Ka\xc5\xbcda z wtyczek Mavena posiada wyspecyfikowane cele kt\xc3\xb3re mo\xc5\xbce realizowa\xc4\x87. Dany cel mo\xc5\xbce by\xc4\x87 wywo\xc5\x82any u\xc5\xbcywaj\xc4\x85c poni\xc5\xbcszej sk\xc5\x82adni:_NEWLINE_mvn [nazwa-wtyczki]:[nazwa-celu]_NEWLINE_Przyk\xc5\x82adowo kompilacji kodu mo\xc5\xbcna dokona\xc4\x87 wywo\xc5\x82uj\xc4\x85c mvn compile:compile.\n_START_SECTION_\nGenerowanie raport\xc3\xb3w\n_START_PARAGRAPH_\nJedn\xc4\x85 z funkcji Mavena jest zautomatyzowana generacja strony internetowej projektu. Strona, opr\xc3\xb3cz og\xc3\xb3lnych informacji ustalanych na podstawie POM-a, zawiera r\xc3\xb3wnie\xc5\xbc zbi\xc3\xb3r raport\xc3\xb3w dokumentuj\xc4\x85cych projekt. W sk\xc5\x82ad raport\xc3\xb3w wchodz\xc4\x85 najcz\xc4\x99\xc5\x9bciej Javadoc, kody \xc5\xbar\xc3\xb3d\xc5\x82owe, PMD.\n_START_SECTION_\nMaven a Ant\n_START_PARAGRAPH_\nApache Ant jest innym narz\xc4\x99dziem na platform\xc4\x99 Java automatyzuj\xc4\x85cym proces budowy oprogramowania. Pracuj\xc4\x85c z Antem, programista tworzy skrypt (Buildfile) okre\xc5\x9blaj\xc4\x85cy krok po kroku spos\xc3\xb3b budowy programu. W Mavenie natomiast okre\xc5\x9bla raczej co ma zosta\xc4\x87 zbudowane i w jaki spos\xc3\xb3b, ni\xc5\xbc kiedy i w jakiej kolejno\xc5\x9bci. Kolejno\xc5\x9b\xc4\x87 wykonywania poszczeg\xc3\xb3lnych faz jest ustalana przez Mavena. Tym samym Maven wydaje si\xc4\x99 by\xc4\x87 mniej elastyczny ni\xc5\xbc Ant. Na korzy\xc5\x9b\xc4\x87 Mavena przemawia fakt, \xc5\xbce stworzenie i utrzymanie pliku POM wymaga zwykle znacznie mniej pracy, ni\xc5\xbc Antowego Buildfile\'a.'