Planning and Managing Software Projects 2011-12MavenEmanuele Della Valle, Lecturer: Daniele Dell’Agliohttp://emanueledella...
What is Maven?   Maven is a project management tool         Build automation tool         Deployment tool         Docu...
Convention   Maven exploits the «Convention over configuration»    approach         Assumption about the location of sou...
Project Object Model    The key element is the Project Object Model (POM)    It is a xml file (pom.xml) located in the r...
Project coordinates       It is the “passport” of the artifact       The required information are:             Model ve...
Project coordinates<project>   <modelVersion>4.0.0</modelVersion>   <groupId>pmsp.maven</groupId>   <artifactId>firstexamp...
Dependencies   POM contains the description of the artifacts    required by the project   Each dependency contains     ...
Dependencies   In general the dependency is transitive         It depends on the scope!          http://maven.apache.org...
Dependencies…<dependencies>         <dependency>              <groupId>junit</groupId>              <artifactId>junit</art...
Plugins and Goals     The Maven core doesnt contain the logic to compile,      test, package the software     Those feat...
Goals    Each plugin offers a set of goals          A goal is an executable task                                        ...
Phases and lifecycles    A phase is a step in the build lifecycle, which is an     ordered sequence of phases. [Apache Ma...
Lifecycles: default (simplified)                                                                  validate                ...
Lifecycles: default (simplified) - packaging jar            validate            compile                                • c...
Lifecycles: default (simplified) - packaging pom            validate            compile                  test           pa...
Repositories    Repositories are the places where dependencies and     plugins are located           They are declared i...
Repositories<repositories>    <repository>        <id>central</id>        <name>Maven Repository Switchboard</name>       ...
References Maven http://maven.apache.org/guides/ Apache Maven 2 (Dzone RefCard)  http://refcardz.dzone.com/refcardz/apac...
Upcoming SlideShare
Loading in...5
×

P&MSP2012 - Maven

284

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
284
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "P&MSP2012 - Maven"

  1. 1. Planning and Managing Software Projects 2011-12MavenEmanuele Della Valle, Lecturer: Daniele Dell’Agliohttp://emanueledellavalle.org
  2. 2. What is Maven? Maven is a project management tool  Build automation tool  Deployment tool  Documentation generator  Report generator  ... Even if the focus in on Java projects, other programming languages are supported (C#, Ruby, etc.)Planning and Managing Software Projects – Emanuele Della Valle
  3. 3. Convention Maven exploits the «Convention over configuration» approach  Assumption about the location of source code, test, resources  Assumption about the location of the output  Etc. In general the conventions can be customized by users Example: folder layout  src/main/java  src/main/resources  src/test/java  src/test/resources(http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html)Planning and Managing Software Projects – Emanuele Della Valle
  4. 4. Project Object Model The key element is the Project Object Model (POM) It is a xml file (pom.xml) located in the root of the project folder It contains the description of the project and all the information required by Maven POM contains:  Project coordinates  Dependencies  Plugins  Repositories A POM can be easily generated through mvn archetype:generate Planning and Managing Software Projects – Emanuele Della Valle
  5. 5. Project coordinates It is the “passport” of the artifact The required information are:  Model version: the version of the POM  Group id: unique identificator of the group/organization that creates the artifact  Artifact id: unique identificator of the artifact  Version: the version of the artifact. If the artifact is a non-stable/under development component, -SNAPSHOT should be added after the version number Another important information is the packaging  It influences the build lifecycles  Core packaging: jar (default), pom, maven-plugin, ejb, war, ear, rar, par Planning and Managing Software Projects – Emanuele Della Valle
  6. 6. Project coordinates<project> <modelVersion>4.0.0</modelVersion> <groupId>pmsp.maven</groupId> <artifactId>firstexample</artifactId> <version>0.1</version> <packaging>jar</packaging></project> Planning and Managing Software Projects – Emanuele Della Valle
  7. 7. Dependencies POM contains the description of the artifacts required by the project Each dependency contains  The required artifact (identified by its coordinates)  The scope: controls the inclusion in the application and the availability in the classpath  compile (default): required for compilation, in the classpath and packaged  provided: required for compilation, in the classpath but not packaged (e.g. servlet.jar)  runtime: required for the execution but not for the compilation (e.g. JDBC, SLF4J bridges)  test: required only for testing, not packaged (e.g. JUnit)  system: like provided but with an explicit folder locationPlanning and Managing Software Projects – Emanuele Della Valle
  8. 8. Dependencies In general the dependency is transitive  It depends on the scope! http://maven.apache.org/guides/introduction/introductio n-to-dependency-mechanism.html#Dependency_Scope If the project requires artifact A, and artifact A requires artifact B, then also artifact B will be included in the project Users can disable the transitivity through the exclusion commandPlanning and Managing Software Projects – Emanuele Della Valle
  9. 9. Dependencies…<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> … </dependencies>…Planning and Managing Software Projects – Emanuele Della Valle
  10. 10. Plugins and Goals The Maven core doesnt contain the logic to compile, test, package the software Those features are provided through plugins • Examples: archetype, jar, compiler, surefire As dependencies, projects should declare what are the required plugins...<plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.10</version> </plugin></plugins>...Planning and Managing Software Projects – Emanuele Della Valle
  11. 11. Goals Each plugin offers a set of goals  A goal is an executable task plugin goal 1 goal 2 goal 3 A goal can be invoked in the following way: mvn plugin:goal Example: mvn archetype:generate Planning and Managing Software Projects – Emanuele Della Valle
  12. 12. Phases and lifecycles A phase is a step in the build lifecycle, which is an ordered sequence of phases. [Apache Maven manual] Lifecycles can be used to execute mutliple operations  A lifecycle models a sequence of operations Each step of a lifecycle is a phase When a lifecycle is executed, plugin goals are bound to the phases  The goal bindings depends by the packaging! Built-in lifecycle  default  clean  site(http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html) Planning and Managing Software Projects – Emanuele Della Valle
  13. 13. Lifecycles: default (simplified) validate compile test package integration-test verify install deploy Planning and Managing Software Projects – Emanuele Della Valle
  14. 14. Lifecycles: default (simplified) - packaging jar validate compile • compiler:compile test • surefire:test package • jar:jar integration-test verify install • install:install deploy • deploy:deploy Planning and Managing Software Projects – Emanuele Della Valle
  15. 15. Lifecycles: default (simplified) - packaging pom validate compile test package • site:attach-descriptor integration-test verify install • install:install deploy • deploy:deploy Planning and Managing Software Projects – Emanuele Della Valle
  16. 16. Repositories Repositories are the places where dependencies and plugins are located  They are declared into the POM When Maven runs, it connects to the repositories in order to retrieve the dependencies and the plugins There is a special repository that is built by Maven on the local machine  It is located in these locations: – Unix: ~/.m2/repository – Win: C:%USER%.m2 • Its purpose is twofold: – It is a cache – Artifacts can be installed there (install:install) and be available for the other artifacts Planning and Managing Software Projects – Emanuele Della Valle
  17. 17. Repositories<repositories> <repository> <id>central</id> <name>Maven Repository Switchboard</name> <layout>default</layout> <url>http://repo1.maven.org/maven2</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> ...</repositories><pluginRepositories> <pluginRepository> ... </pluginRepository></pluginRepositories> Planning and Managing Software Projects – Emanuele Della Valle
  18. 18. References Maven http://maven.apache.org/guides/ Apache Maven 2 (Dzone RefCard) http://refcardz.dzone.com/refcardz/apache-maven-2 Maven: the complete reference (Sonatype) http://www.sonatype.com/books/mvnref- book/reference/ Maven – The definitive Guide (O’Reilly) http://www.amazon.com/Maven-Definitive-Guide- Sonatype-Company/dp/0596517335Planning and Managing Software Projects – Emanuele Della Valle

×