Edellisessä artikkelissani käsittelin Javan ja Mavenin asennusta. Käytännössä jälkimmäisenä mainittu vaatii jonkinlaisen projektipohjan tai ”arkkityypin”, jonka perusteella voidaan laatia monimutkaisempi projekti ja lisätä ohjelma- ja resurssitiedostoja. Käytännössä Maven tarjoaa tällaisen mahdollisuuden jo itsessään, jos komentoriville kirjoittaa
$ mvn archetype:generate
Käytännössä kuitenkin vaihtoehtoja tulee valtavasti ja yksinkertaisemmatkin niistä voivat olla sellaisia, jotka nojautuvat vanhentuneisiin pakettitietoihin. Olen siksi koostanut itse kirjoitushetkellä huhtikuussa 2014 pätevän vaihtoehdon yksinkertaiseksi pohjaksi, jossa on esimerkiksi huomioitu annotaatiopohjaiset JUnit-testit:
Tämän voi purkaa käskyllä unzip jarproject-2014-04-07.zip
ja menemällä sen hakemistoon, voidaan kirjoittaa projektin kääntämiseksi:
$ mvn clean install
Havaitaan, että ohjelma kääntyi ja tiettyjä testejä suoritettiin. Vastaavasti ohjelman pääosan ajo tapahtuu käskyllä:
$ mvn exec:java
Jälkimmäinen komento on sallittu ainostaan, koska projektissa on määritelty exec-maven-plugin
. Tarkasteltaessa projektin hakemistorakennetta, se näyttää tältä:
. ├── pom.xml └── src ├── main │ └── java │ └── fi │ └── mikkonummelin │ └── jarproject │ └── Main.java └── test ├── java │ └── fi │ └── mikkonummelin │ └── jarproject │ └── JarProjectTest.java └── resources └── log4j.properties
Mukana on varsinaisen ohjelman osuus src
ja testien tarvitsema osuus test
. Lisäksi mukana on kaikkein tärkeimpänä Maven-ohjaustiedosto pom.xml
. Sen sisältö on seuraavanlainen:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>fi.mikkonummelin</groupId> <artifactId>jarproject</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>${project.artifactId}</name> <url>http://www.mikkonummelin.fi</url> <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.6</version> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <configuration> <mainClass>fi.mikkonummelin.jarproject.Main</mainClass> </configuration> </plugin> </plugins> </build> </project>
Käytännössä se määrittää projektille riippuvuudet (dependencies) ja liitännäiset (plugins).