MAVEN MASTURBATORS, sex shop costumes Vivid Extra Thin Condom 3 Pack
O My Micro Poppy Vibe
plus size sexy lingerie
Shunga Massage Cream Vanilla
sex (more)
MAVEN MASTURBATORS, sex shop costumes Vivid Extra Thin Condom 3 Pack
O My Micro Poppy Vibe
plus size sexy lingerie
Shunga Massage Cream Vanilla
sexy lingerie pictures
lolita sex dolls
Fleshlight Ice Jack Mouth
Banana Briefs
caught with a sex doll
lifelike sex doll
Super Sex Sling
Wet Gellee KiwiStrawberry Lubricant (less)
From:
emily
Views: 3218
Comments: 0
Communicate an overview of the technical content at Java One.
Articulate and generate ideas for the enterprise platform.
From:
pashminashawls
Views: 31
Comments: 0
The soft warm wool used to create pashmina scarves is delicate and shimmery, it looks like it is a woman’s accessory. http://www.verypashmina.com
Slide 1: www.javapolis.com
Slide 2: Maven 2.0
Improve your build patterns
Vincent Massol CTO Pivolis
www.javapolis.com
Slide 3: Overall Presentation Goal
Discover Maven 2.0 through build patterns
www.javapolis.com
Slide 4: Speaker’s Qualifications
• Vincent is part of the Maven dev team since 2002 • Vincent is the co-author of “Maven: A Developer’s Notebook” published by O’Reilly
– And best-seller « JUnit in Action » from Manning
• Vincent is co-author of a new book on Maven 2
– with Jason Van Zyl, Brett Porter and Carlos Sanchez – will be published by Mergere – will be made available at no cost to the community
• •
Vincent has spoken at various conferences on the topic of build and continuous builds
– TSSS 2003/2004, JavaPolis 2004, JavaZone 2005, etc
Vincent blogs about software quality and open source at www.massol.net
www.javapolis.com
Slide 5: Making your builds boring…
• Building projects should be easy and standardized. You should not be spending a substantial amount of your project time on builds. Builds should just work!
www.javapolis.com
Slide 6: Agenda
• • • • • • • • • What is Maven? Maven Architecture Build patterns Maven 2 plugins Demo Why migrate? Maven 2 Adoption Maven 2 future The Maven ecosystem
www.javapolis.com
Slide 7: What is Maven? (1/2)
A build tool!
A dependency management tool!
A documentation tool!
www.javapolis.com
Slide 8: What is Maven? (2/2)
Maven is really a process of applying patterns to a build infrastructure in order to provide a coherent view of software projects.
• Objectives
– – – – – – – Make the development process visible or transparent Provide an easy way to see the health and status of a project Decreasing training time for new developers Bringing together the tools required in a uniform way Preventing inconsistent setups Providing a standard development infrastructure across projects Focus energy on writing applications
www.javapolis.com
Slide 9: Maven Architecture
Plugin e.g. jar Projects to build Plugin e.g. surefire Plugin e.g. release Local machine Remote repository or local install
Maven Core
www.javapolis.com
Slide 10: Common project metadata format
• POM = Project Object Model = pom.xml • Contains metadata about the project
– Location of directories, Developers/Contributors, Issue tracking system, Dependencies, Repositories to use, etc
• Example:
<project> <modelVersion>4.0.0</modelVersion> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-core-api-container</artifactId> <name>Cargo Core Container API</name> <version>0.7-SNAPSHOT</version> <packaging>jar</packaging> <dependencies/> Minimal POM <build/> […]
www.javapolis.com
Slide 11: Common directory organization
• src/
4 nested projects
– main/
• • • • • java/ resources/ webapp/ application/ groovy/
Other projects
– test/
• java/ • resources/ • cactus/
– site/
www.javapolis.com
Slide 12: Common way to build applications (1/2)
M2
generatesources compile test package integrationtest install deploy bindings mojo mojo mojo mojo mojo
plugins
user
e.g. mvn install
Well-known phases
www.javapolis.com
Slide 13: Common way to build applications (2/2)
• The lifecycle depends on the project type (packaging)
– Defined in pom.xml (pom, jar, ear, war, etc) – Ex: <packaging>jar</packaging>
• User can modify lifecycles by adding a goal to a phase:
<plugin> <groupId>com.mycompany.example</groupId> <artifactId>touch-maven-plugin</artifactId> <executions> <execution> <phase>process-test-resources</phase> <configuration>[…]</configuration> <goals> <goal>timestamp</goal> </goals> </execution> </executions> </plugin> www.javapolis.com
Slide 14: Artifact repositories (1/3)
• Used to store all kind of artifacts
– JARs, EARs, WARs, NBMs, EJBs, ZIPs, plugins, … Local Artifact Repository Remote Artifact Repository
• All project interactions go through the repository
– No more relative paths! – Easy to share between teams
e.g. http://ibiblio.org/maven2
<repositories> <repository> <id>maven2-snapshot</id> <releases> <enabled>true</enabled> </releases> <name>Maven Central Development Repository</name> <url>http://snapshots.maven.codehaus.org/maven2</url> <layout>legacy|default</layout> </repository> </repositories>
www.javapolis.com
Slide 15: Artifact repositories (2/3)
• Some public remote repositories
JIRA upload rewriting to URL ibiblio preserve m1 URLs requests m1 m1
sync + conversion Conversion + sync
yesterday today
+ m1
ibiblio m2 m1 +
JIRA upload requests m2
Codehaus m1 + m2
ObjectWeb m1 + m2
Apache m1 + m2
Jetty m1 + m2
partners
Open Symphony m1 + m2
OS Java m1 + m2
www.javapolis.com
Slide 16: Artifact repositories (3/3)
• Hierarchical structure • Automatic plugin download • Plugins are read directly from the repository • Configurable strategies for checking the remote repositories for updates – Daily check by default for plugin and ranges updates • Remote repositories contain Metadata information – Releases, latest, and more to come
www.javapolis.com
Slide 17: Dependency management (1/2)
• Maven uses binary dependencies
A B
« any version after 1.0 »
<dependencies> <dependency> <groupId>com.acme</groupId> <artifactId>B</artifactId> <version>[1.0,)</version> <scope>compile</scope> </dependency> </dependencies>
C
Look for A & B
Build C
Artifact Repository (Local)
Look for A & B
www.javapolis.com
Artifact Repositories (Remote)
Slide 18: Dependency management (2/2)
• Transitive dependencies
– Possibility to exclude some deps – Need good metadata – Ideally projects should be split
B A
Only need to include A
C
D
• SNAPSHOT handling
– Always get latest
• Automatic dep updates
– By default every day
www.javapolis.com
Slide 19: Multi-module builds
• Integrated into Maven 2 • Run « mvn » at parent level
– E.g. mvn install in cargo/core/api – E.g. mvn install in cargo/core – E.g. mvn install in cargo/
• Declare children projects in parents:
<modules> <module>core</module> <module>extensions</module> <module>samples</module> </modules>
www.javapolis.com
Slide 20: Environment-dependent builds (1/2)
• Based on profiles
– Located in pom.xml, in profiles.xml or in settings.xml
<profiles> Profile that <profile> <id>tomcat5x</id> active <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <containerId>tomcat5x</containerId> <downloadUrl>…jakarta-tomcat-5.0.30.zip</downloadUrl> </properties> </profile> <profile> <id>orion2x</id> <properties> <containerId>orion2x</containerId> <downloadUrl>…orion2.0.5.zip</downloadUrl> […] www.javapolis.com
is always
Slide 21: Environment-dependent builds (2/2)
• Different activation conditions
– JDK version, OS, property defined, existence of file or directory
• Profiles can also modify plugin configurations and other POM elements
– Merged with the main pom.xml content
• Profiles can be selected on the command line:
mvn –P orion2x,resin3x install
www.javapolis.com
Slide 22: Site and reports (1/4)
• Lots of reports
– Project information (mailing lists, SCM, dependencies, etc) – PMD, Checkstyle, Javadoc, etc
<reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> </plugin> […] </plugins> </reporting>
www.javapolis.com
Slide 23: Site and reports (2/4)
• Accepts several input formats
– – – – Almost Plain Text (Wiki like) Xdoc (Maven 1.0 compatible) FAQ (Maven 1.0 compatible) Docbook
mvn site
www.javapolis.com
Slide 24: Site and reports (3/4)
-----Generating a Site -----Apache Maven Team -----13 May 2005 -----Building a Site * Creating Content The first step to creating your site is to create some content. In Maven 2.0, the site content is separated by format, as there are several available. ------------------+- src/ +- site/ +- apt/ | +- index.apt +- site.xml -------------------The Xdoc format is the same as {{{http://maven.apache.org/using/site.html} used in Maven 1.0}}. However, <<<navigation.xml>>> has been replaced by the site descriptor (see below).
www.javapolis.com
Slide 25: Site and reports (4/4)
www.javapolis.com
Slide 26: Maven 2 Plugins (1/2)
• • • • • • • • • • • • • • • • • Antlr Ant AntRun AspectJ Assembly Assembly-report Cargo Castor Changelog Changes Commons-attributes Checkstyle Clean Clover Csharp Cobertura Compiler • • • • • • • • • • • • • • • • • Deploy Ear Eclipse Ejb Ejb3 Exec Groovy Help Hibernate2 Idea Install Issue It Jalopy Jar Javacc Javadoc • • • • • • • • • • • • • • • • • Javancss Jboss Jcoverage Jdepend Jdiff Jelly Jetty Jpox Jspc Jxr MAnt Native One Par Plugin Pmd Project-info-reports Rar • • • • • • • • • • • • • • • • • • Release Repository Resources Repository Sablecc Site Slimdog Source Surefire Surefire-report Taglist Tomcat Verifier Xslt War Wsdl2java Xdoclet Xmlbeans
Status: docs.codehaus.org/display/MAVEN/Maven+Plugin+Matrix
www.javapolis.com
Slide 27: Maven 2 Plugins (2/2)
• Plugins are downloaded on demand
– First time they are used
• Updates downloaded automatically
– Opt-in notification if newer plugin found
<build> <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> www.javapolis.com
Slide 28: DEMO
www.javapolis.com
Slide 29: Why migrate?
• From Ant
– 1000 lines of scripts per project to ~50 – Ability to benefit from all existing plugins and all future plugins! – There are Maven 2 Ant tasks too
• From Maven 1
– Faster (and smaller)
• E.g. from 2m26s to 50s to build Cargo’s core
– New features
• • • • Easier to use (well-defined lifecycle) Transitive dependencies Profiles …
– New features happen in M2
• M1 is mostly in maintenance mode
– Tools are built around M2 (e.g. continuum, visual project managment, dashboards, etc)
www.javapolis.com
Slide 30: Maven 2 Adoption (1/2)
Maven 2.0 release
Graphs generated on 5th of December 2005 www.javapolis.com
Source: http://people.apache.org/~coar/mlists.html
Slide 31: Source: http://people.apache.org/~vgritsenko/stats/projects/maven.html
Busiest mailing-lists at Apache
Maven 2 Adoption (2/2)
9200+ jars on ibiblio
www.javapolis.com
Page views on Maven web site
Source: http://people.apache.org/~coar/mlists.html
Slide 32: Maven 2 Future
• Features for 2.1+
– – – – – – – – – Site aggregation Notion of Workspaces POM templating Stronger support for other languages Substitution of Custom Maven Components Reusable Resources Repository enhancements Stronger plugin version selection Lifecycle enhancement for plugin execution
www.javapolis.com
Slide 33: The Maven Ecosystem
Standardized Project Metadata Builds (Maven) Development tools Continuous integration (Continuum) Repository management and CPAN equivalent Dashboards (Quality, Productivity, etc)
www.javapolis.com
Slide 34: Summary
• Maven 2 architecture is better than Maven 1 • Maven 2 addresses the main build patterns • Maven 2 is ready to be used (*)
•
(*) But be prepared to work closely with the Maven development team
www.javapolis.com
Slide 35: If You Only Remember One Thing…
Now is the right time to evaluate Maven 2 and provide feedback to the development team. We do listen and you can help shape Maven 2.
www.javapolis.com
Slide 36: Q&A
www.javapolis.com
Slide 37: www.javapolis.com