Maven

Fra TermvaktWiki
Revisjon per 4. feb 2010 kl. 09:30 av Livelik (Diskusjon | bidrag)
Gå til: navigasjon, søk


Apache Maven er et verktøy som kan brukes til å bygge og bruke hvilket som helst Java-basert prosjekt.Det baserer seg på konseptet project object model, POM, og er ment for å lette arbeidet for Java-programmerere.


Innhold

HMaven introduksjon

I kommandovinduet, skriver du følgende Maven mål:

      mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app

Dett kan ta litt tid hvis du nettopp har installert programvaren, nye plugins og oppdateringer vil bli hentet. Har du problemer kan du gjenta kommandoen noen ganger, det kan være pga time out grunnet lang tid på nedlstninger.

Målet lagde et mappe (directory) med det samme navnet som artifactId. Gå til denne mappen:

      cd my-app

I denne mappen vil du finn denne standard prosjekt strukturen

   my-app
   |-- pom.xml
   `-- src
       |-- main
       |   `-- java
       |       `-- com
       |           `-- mycompany
       |               `-- app
       |                   `-- App.java
       `-- test
           `-- java
               `-- com
                   `-- mycompany
                       `-- app
                           `-- AppTest.java

Du finner prosjekt kildekoden under src/main/java, testkilden under src/test/java, og pom.xml er prosjektets Project Object Model, eller POM.

POM

Filen pom.xml er kjernen til et prosjekts konfigurasjon i Maven. Denne ene fila inneholder størsteparten av informasjonen som kreves for å bygge et prosjekt slik du ønsker. Fila er stor og kan inneholder mye intrikate detaljer. I startfasen trenger du ikke alle disse detaljene. Dette er et eksempel på et prosjekts POM:

   <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>com.mycompany.app</groupId>
     <artifactId>my-app</artifactId>
     <packaging>jar</packaging>
     <version>1.0-SNAPSHOT</version>
     <name>Maven Quick Start Archetype</name>
     <url>http://maven.apache.org</url>
     <dependencies>
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
       </dependency>
     </dependencies>
   </project>

Nå kjørte (execute) du Maven målet (goal) archetype:create, og et sett parametere ble sendt med. Prefixen archetype er pluginen som inneholder målet (goal). Dette målet konstruerte et enkelt prosjekt basert på en archetype. Plugin er en samling av mål (goals) med et generelt felles formål. For eksempel har jboss-maven-plugin formålet å "håndtere forskjellige jboss items".

Bygge opp et prosjekt

  mvn package

Da vil det skrives ut forskjellige handlinger og slutte med:

  ...
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESSFUL
 [INFO] ------------------------------------------------------------------------
 [INFO] Total time: 2 seconds
 [INFO] Finished at: Thu Oct 05 21:16:04 CDT 2006
 [INFO] Final Memory: 3M/6M
 [INFO] ------------------------------------------------------------------------

I motsetning til den første komandoen (archetype:create) er den andre kommandoen bare t enkelt ord - package. I stedet for et mål (goal), er dette en fase (phase). Dette er et steg i byggesyklusen (build lifecycle), som er en ordnet sekvens av faser (phases). Når en fase (phase) er gitt, vil Maven kjøre alle faser i sekvensen frem til og med den som ble gitt. For eksempel, hvis du angir kompileringsfasen, vil disse fasene bli kjørt:

  1. validate
  2. generate-sources
  3. process-sources
  4. generate-resources
  5. process-resources
  6. compile

Nå kan du teste den nykompilerte og pakkede JAR med følgende kommando:

  java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

Som vil printe the quintessential:

  Hello World!

Maven Tools

--Maven Phases--

Dette er de mest vanlige default livssykle fasene (lifecycle phases) du kan kjøre:

   * validate: validate the project is correct and all necessary information is available
   * compile: compile the source code of the project
   * test: test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
   * package: take the compiled code and package it in its distributable format, such as a JAR.
   * integration-test: process and deploy the package if necessary into an environment where integration tests can be run
   * verify: run any checks to verify the package is valid and meets quality criteria
   * install: install the package into the local repository, for use as a dependency in other projects locally
   * deploy: done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.

There are two other Maven lifecycles of note beyond the default list above. They are

   * clean: cleans up artifacts created by prior builds
   * site: generates site documentation for this project

Phases are actually mapped to underlying goals. The specific goals executed per phase is dependant upon the packaging type of the project. For example, package executes jar:jar if the project type is a JAR, and war:war is the project type is - you guessed it - a WAR.

An interesting thing to note is that phases and goals may be executed in sequence.

mvn clean dependency:copy-dependencies package

This command will clean the project, copy dependencies, and package the project (executing all phases up to package, of course). Generating the Site

mvn site

This phase generates a site based upon information on the project's pom. You can look at the documentation generated under target/site.


Versjon

For å sjekke hvilken versjon du har installert kan du bruke denne kommandoen:

    mvn --version


Og detaljene vil listes opp

    Maven version: 2.0.8
    Java version: 1.5.0_12
    OS name: "windows 2003" version: "5.2" arch: "x86" Family: "windows"


For mer informasjon og hjelp, sjekk http://apache.maven.org/

Personlige verktøy
Navnerom
Varianter
Handlinger
Navigasjon
Kategorier
Programvare
Andre
Translate
Verktøy