www.vertixo.com

Reactie plaatsen 
 
Waardering:
  • 1 stemmen - gemiddelde waardering is 5
  • 1
  • 2
  • 3
  • 4
  • 5

Het beheren van je project met Maven

Auteur Bericht
Logical Offline
Java goeroe
**

Berichten: 38
Lid sinds: 08-2006
Bericht: #1
Het beheren van je project met Maven
Maven
Deze tutorial gaat over het ontwikkelen van software(projecten) met behulp van Maven 2. Maven 1.x (wat totaal anders werkt) laat ik buiten beschouwing.

Naast het schrijven van code bestaat het ontwikkelen van software uit het compileren, het beheren van dependencies op bepaalde jar's en het bieden van mogelijkheden om te deployen.

Om dit te automatiseren wordt ook wel Ant gebruikt. Maven is echter die nieuwe, uitgebreide, variant hiervan.

Maven installeren
Laten we beginnen met het downloaden en uitpakken van de Maven applicatie:
de Download Maven 2.0.4 pagina

Maven gebruiken om te compileren (minimale opzet)
Maak een map aan met de naam van het project (in de rest van het voorbeeld genoemd '%proj_dir%\').
Hierin maak je de volgende dir:
%proj_dir%\src\ en daar plaats al je applicatie java bestanden en/of packages in.

Maak een bestand '%proj_dir%\compile.bat' met erin:
Code:
set path=C:\test\maven-2.0.4\bin\;%path%
set java_home=C:\Program Files\Java\jdk1.5.0_04
set MAVEN_BATCH_PAUSE=on

mvn compile
(laat de paden wijzen naar respectievelijk je Maven dir en je Java dir)

En maak een bestand '%proj_dir%\run.bat' met erin:
Code:
java -classpath ./target/classes/ Main

pause
Aangenomen dat Main je java bestand is om je applicatie mee op te starten.

Maak tot slot een bestand '%proj_dir%\pom.xml' met erin:
Code:
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>Tuples</groupId>
  <version>1.0</version>
  <artifactId>Tuples</artifactId>
  
  <build>
    <sourceDirectory>${basedir}/src/</sourceDirectory>
    <plugins>
       <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
             <source>1.5</source>
             <target>1.5</target>
          </configuration>
       </plugin>

    </plugins>
  </build>
</project>
Die source+target en configuration mag weggelaten worden als ook lagere versies van Java gebruikt mogen worden. Noem vervolgens de 'groupId' en 'artifactId' bovenin naar iets toepasselijks op de applicatie.

Voer nu de compile.bat uit.
Nu begint Maven van alles te downloaden en te doen.
(de gedownloade bestanden komen trouwens te staan in: ~/.m2/repository/ of C:\Documents and Settings\User\.m2\repository\)
Dit zal overigens eindigen met een BUILD ERROR, maar blijf de compile.bat uitvoeren totdat je een BUILD SUCCESSFUL krijgt.

Nu kun je de run.bat uitvoeren voor het resultaat ;)

Download het complete Tuple voorbeeld op: Basic Maven.
(Gebruik de 'save all' knop omdat die ook de juiste directories aanmaakt !)


Uitgebreidere projecten
In deze stap gaan we JUnit tests toevoegen en een website met overzichten laten genereren.

Nu is het tijd om een geschikte directory indeling te maken.
Laten we in deze tutorial het Tuple voorbeeld te nemen uit Java 1.5 tutorial - Generics.
Maak (wederom) een map aan met de naam van het project.
Hierin maak je de volgende dirs:
%proj_dir%\src\main\java
%proj_dir%\src\test\java
Plaats al je applicatie java bestanden in '%proj_dir%\src\main\java'.

De '%proj_dir%\src\test\java' zal de java bestanden gaan bevatten met JUnit tests. JUnit tests zijn kleine tests die bepaald gedrag van je objecten test.
Een test om de tuple te testen zou kunnen zijn:
Code:
import junit.framework.TestCase;

public class TupleTest extends TestCase
{
    public TupleTest() {}

    public void testTupleCreation()
    {
        Tuple<String, String> objectTuple = new Tuple<String, String>("fstString", "sndString");

        String fst = objectTuple.getFst();
        String snd = objectTuple.getSnd();

        assertNotNull(objectTuple);
        assertTrue( objectTuple instanceof Tuple );
        assertEquals("fstString", fst);
        assertEquals("sndString", snd);
    }
}
Wanneer een assert faalt komt dit voor in de JUnit statistieken.

Voor deze uitgebreide versie zijn een flink aantal bestanden nodig. Download daarom de volgende bestanden: Tuple sources with advanced Maven (Gebruik de 'save all' knop omdat die ook de juiste directories aanmaakt !).

Het tuple voorbeeld bevat dus een aantal bestanden. Een pom.xml die Maven verteld wat te doen, een checkstyle.xml om een checkstyle report te genereren (komt later nog aan de orde), en een aantal uitvoerbare bestanden om Maven aan te roepen.

Maar eerst, voer de test.bat en report.bat uit totdat je een BUILD SUCCESSFUL krijgt.

In de gegenereerde target/site dir staat nu een index.html. Bekijk deze en klik op Project Reports. Nu verschijnen er een linkjes naar Checkstyle, Clover etc.. Klik hierop om de overzichten van de resultaten in te zien.

Kwaliteit van software wordt verbeterd dmv:
  • Checkstyle - die dingen aangeeft als 'teveel regels per methode' etc
  • JUnit - tests overzicht (met name welke tests gefaald zijn)
  • FindBugs - voor slechte programmeerstructuren (in dit voorbeeld uitgeschakeld)
  • Clover - om te tonen hoeveel procent van de code door de junit tests daadwerkelijk getest worden (30 dagen trial)
  • CPD - om code duplicatie te detecteren
  • PMD - om potentiële problemen te vinden
  • Simian - voor code duplicatie
Deze plugins kunnen worden toegevoegd of verwijderd in de pom.xml. FindBugs is in dit voorbeeld uitgecommentariseerd. De reden hiervoor is een bug.
Uitleg hiervoor staat ook in de pom.xml:
Code:
<!-- To get the following plugin to work, you have to 'hack' this next thing
        
             edit:
               ~/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.pom
               C:\Documents and Settings\User\.m2\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.pom
              
             find:
               <dependency>
                 <groupId>jaxen</groupId>
                 <artifactId>jaxen</artifactId>
                 <version>1.1-beta-6</version>
                 <optional>true</optional>
               </dependency>
            
             remove or comment the optional line !
         -->
Wil je dus FindBugs inschakelen, haal dan de <!-- en --> weg om:
Code:
<plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <version>1.0-SNAPSHOT</version>
            <configuration>
               <threshold>Normal</threshold>
            </configuration>
         </plugin>
Vervolgens moet je de '<optional>true</optional>' weghalen uit: C:\Documents and Settings\User\.m2\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.pom.
Run nu report.bat en de FindBugs wordt netjes in de website weergegeven.

Checkstyle controleert dingen als maximaal aantal regels per methode, maximaal aantal regels per bestand, teveel geneste lussen etc. Deze waardes vallen in te stellen en daar komt de checkstyle.xml om de hoek kijken. Deze bepaalt welke controles uitgevoerd worden met welke limieten.

De gegenereerde website ziet er dan als volgt uit: Resultaat

Tot slot wil ik het belang van Subversion (SVN) en ToirtoiseSVN benadrukken. Iedere serieuse programmeur kan niet zonder (lees ook dit overzicht). Ook voor je eigen projectjes op je thuis-pc is het erg handig. Niet langer dingen uitcommentariseren (gewoon dingen verwijderen want het staat toch in het versiebeheersysteem), meerdere mapjes met verschillende versies bijhouden of dingen kwijtraken.

Bronnen:
Maven Getting Started Guide
(Dit bericht is het laatst bewerkt op 02-12-2007 om 03:30:57 door Logical.)
26-08-2006 00:07:01
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Michiel Offline
Nederlander
*****

Berichten: 945
Lid sinds: 05-2006
Bericht: #2
RE: Het beheren van je project met Maven
Eyz! Ik snap er niks van omdat ik geen Java kan :P, maar ik vind het supergoed dat je als nieuw lid nu al je steentje wilt bijdragen! Super! :D
26-08-2006 08:47:51
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Twist Offline
Pytoloog
*****

Berichten: 1.381
Lid sinds: 04-2006
Bericht: #3
RE: Het beheren van je project met Maven
Wat erasmus zegt: Ik kan geen Java, maar ik vind het super dat je je inzet voor ep2!

+++

He's back
26-08-2006 09:24:52
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Elco Offline
Ep2 Volunteer
****

Berichten: 1.337
Lid sinds: 04-2006
Bericht: #4
RE: Het beheren van je project met Maven
En voor zij die enkel geinteresseerd zijn in enkel het documenteren nog even verwijzen naar dit artikel: Forrest
(Dit bericht is het laatst bewerkt op 26-08-2006 om 09:38:57 door Elco.)
26-08-2006 09:38:34
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Kevin Offline
Sunnyblizard
*****

Berichten: 1.297
Lid sinds: 04-2006
Bericht: #5
RE: Het beheren van je project met Maven
Ja, puik werk! Alhoewel ik ook weinig java programmeer ;)
+++

What if God is the consciousness that is created when enough of us are connected to the internet.
26-08-2006 09:39:36
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Jasper Offline
Retired Ep2 Founder
*****

Berichten: 15.510
Lid sinds: 04-2006
Bericht: #6
RE: Het beheren van je project met Maven
Een erg moeilijk te begrijpen tutorial, maar enorm tof dat je hem plaatst op Ep2! :) Dank je wel! ++
05-09-2006 07:18:46
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
reijnemans Offline
Java Prutser
***

Berichten: 203
Lid sinds: 04-2006
Bericht: #7
RE: Het beheren van je project met Maven
Logical schreef:Nu begint Maven van alles te downloaden en te doen.
(de gedownloade bestanden komen te staan in: ~/.m2/repository/ of C:\Documents and Settings\User\.m2\repository\)
Dit zal overigens eindigen met een BUILD ERROR

Wat is de oorzaak hiervan??

De compile.bat en de run.bat moet deze in de src map worden geplaatst?

Verder vind ik de tutorial goed te volgen (Y).

Ik zeg maar zoo, dat is korter als dierentuin
05-09-2006 07:56:42
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Logical Offline
Java goeroe
**

Berichten: 38
Lid sinds: 08-2006
Bericht: #8
RE: Het beheren van je project met Maven
Jasper schreef:Een erg moeilijk te begrijpen tutorial
welk gedeelte heb je moeite mee ? (suggesties ?)
En met het 'Download het complete Tuple voorbeeld op ...' gedeelte kan je alle bestanden in de juiste dirs laten opslaan. Op die manier zou je het vrij vlot aan de praat moeten kunnen krijgen.

reijnemans schreef:Wat is de oorzaak hiervan??
ik heb geen idee... lijkt nu eenmaal een eigenaardigheid van Maven te zijn oid ?

reijnemans schreef:De compile.bat en de run.bat moet deze in de src map worden geplaatst?
nee, precies in de bovenliggende map
ik heb '\' in het voorbeeld maar ff herschreven naar '%proj_dir%\' waarbij %proj_dir% de bovenste directory van je project is.
(Dit bericht is het laatst bewerkt op 05-09-2006 om 09:00:17 door Logical.)
05-09-2006 08:47:02
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
reijnemans Offline
Java Prutser
***

Berichten: 203
Lid sinds: 04-2006
Bericht: #9
RE: Het beheren van je project met Maven
thx

Logical schreef:Clover - om te tonen hoeveel procent van de code door de junit tests daadwerkelijk getest worden (30 dagen trial)

Dit kan je ook doen met de volgende plugin: http://cobertura.sourceforge.net/

Ik zeg maar zoo, dat is korter als dierentuin
05-09-2006 09:05:48
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Logical Offline
Java goeroe
**

Berichten: 38
Lid sinds: 08-2006
Bericht: #10
RE: Het beheren van je project met Maven
Thx, die kende ik nog niet ;)
heb 'm iig ff toegevoegd.

Als jullie nog meer interessante plugins ontdekken, laat 't me weten !
05-09-2006 18:17:15
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
jsanders Offline
Enthousiaste EP2 gebruiker
****

Berichten: 543
Lid sinds: 07-2006
Bericht: #11
RE: Het beheren van je project met Maven
Logical schreef:Tot slot wil ik het belang van Subversion (SVN) en ToirtoiseSVN benadrukken. Iedere serieuse programmeur kan niet zonder (lees ook dit overzicht). Ook voor je eigen projectjes op je thuis-pc is het erg handig. Niet langer dingen uitcommentariseren (gewoon dingen verwijderen want het staat toch in het versiebeheersysteem), meerdere mapjes met verschillende versies bijhouden of dingen kwijtraken.

Zou je het linkje in het overzicht kunnen updaten? Dit werkt nu niet meer
30-07-2007 16:49:49
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
libia Offline
..
***

Berichten: 150
Lid sinds: 10-2007
Bericht: #12
RE: Het beheren van je project met Maven
ik snap eigenlijk niet wat nu precies het doel is achter maven :P
09-10-2007 14:56:48
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
reijnemans Offline
Java Prutser
***

Berichten: 203
Lid sinds: 04-2006
Bericht: #13
RE: Het beheren van je project met Maven
Handige plugin voor het genereren van een jar met daarin alle dependencies http://maven.apache.org/plugins/maven-shade-plugin/

Ik zeg maar zoo, dat is korter als dierentuin
20-02-2009 10:26:27
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
mudelta Offline
Senior Member
****

Berichten: 442
Lid sinds: 04-2007
Bericht: #14
RE: Het beheren van je project met Maven
Hoi Logical,

super dat je de moeite doet om een tutorial te maken.

Persoonlijk mis ik een beetje een algemene uitleg over maven:
- de basisprincipes (POM,repositories, dependency management, lifecycles, build-profiles, plugins)
- de conventions die gehanteerd worden (convention over configuration )

20-02-2009 16:06:11
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
reijnemans Offline
Java Prutser
***

Berichten: 203
Lid sinds: 04-2006
Bericht: #15
RE: Het beheren van je project met Maven
mudelta schreef:Hoi Logical,

super dat je de moeite doet om een tutorial te maken.

Persoonlijk mis ik een beetje een algemene uitleg over maven:
- de basisprincipes (POM,repositories, dependency management, lifecycles, build-profiles, plugins)
- de conventions die gehanteerd worden (convention over configuration )

Wat houd je tegen om dit zelf te schrijven?

Ik zeg maar zoo, dat is korter als dierentuin
20-02-2009 21:05:53
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
mudelta Offline
Senior Member
****

Berichten: 442
Lid sinds: 04-2007
Bericht: #16
RE: Het beheren van je project met Maven
reijnemans schreef:Wat houd je tegen om dit zelf te schrijven?
Momenteel twee zaken:

1) de nodige ervaring met maven
2) vooral tijd

20-02-2009 21:45:59
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Reactie plaatsen 


Ga naar locatie:


Contact opnemen | Ep2 | Naar boven | Naar inhoud | Archiefmodus | RSS-syndicatie