SlideShare a Scribd company logo
Apache MavenMarsJUGArnaud HéritiereXo platformSoftware Factory Manager
Arnaud HéritierCommitter since 2004 and member of the Project Management CommitteeCoauthor of « Apache Maven » published by Pearson (in French)Software Factory Manager at eXo platform In charge of tools and methods
OverviewApache Maven
BasicsApache Maven4
DefinitionApache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, binaries, reporting and documentation from a central piece of information.Apache Maven is a command line tool with some IDE integrations.
Conventions1 project = 1 artifact (pom, jar, war, ear, …)Standardizeddirectories layoutprojectdescriptor (POM)buildlifecycle6
POMAn XML file (pom.xml)DescribingProject identificationProject versionProject descriptionBuild settingsDependencies…<?xml version="1.0" encoding="UTF-8"?><project> <modelVersion>4.0.0</modelVersion> <groupId>org.apache.maven</groupId> <artifactId>webapp-sample</artifactId> <version>1.1-SNAPSHOT</version> <packaging>war</packaging> <name>Simple webapp</name> <inceptionYear>2007</inceptionYear> <dependencies>  <dependency>   <groupId>org.springframework</groupId>   <artifactId>spring-struts</artifactId>   <version>2.0.2</version>  </dependency>  ... </dependencies></project>
WithoutMavenWithMavenDependencies
DependenciesDeclarativesgroupId+artifactId+version (+ classifier)Type (packaging): jar, war, pom, ear, …TransitivesLibAneedsLib BLibBneedsLib CThusLibAneedsLib C
DependenciesScopeCompile (by default) : Required to build and run the applicationRuntime : not required to build theapplication but needed at runtimeEx : taglibsProvided : required to build theapplication but not needed at runtime (provided by the container)Ex : Servlet API, Driver SGBD, …Test : required to build and launch tests but not needed by theapplication itself to build and runEx : Junit, TestNG, DbUnit, …System : local library with absolute pathEx : software products
ArtifactRepositoryBy default :A central repositoryhttp://repo1.maven.org/maven2Severaldozen of Gb of OSS librariesA local repository${user.home}/.m2/repositoryAll artifactsUsed by maven and its pluginsUsed by yourprojects (dependencies)Produced by yourprojects
Artifact RepositoryBy default Maven downloads artifacts required by the project or itself from centralDownloaded artifacts are stored in the local repository
VersionsProject and dependency versionsTwo different version variantsSNAPSHOT versionThe version number ends with –SNAPSHOTThe project is in development Deliveries are changing over the time and are overridden   after each buildArtifacts are deployed with a timestamp on remote repositoriesRELEASE versionThe version number doesn’t end with –SNAPSHOTBinaries won’t change
Versions
VersionsAbout SNAPSHOT dependenciesMaven allows the configuration of an update policy. The update policy defines the recurrence of checks if there is a new SNAPSHOT version available on the remote repository :alwaysdaily (by default)interval:X (a given period in minutes)neverMust not be used in a released projectThey can change thus the release also 
VersionsRangeFrom … to … Maven automatically searches for the corresponding version (using the update policy for released artifacts)To use with cautionRisk of non reproducibility of the buildRisk of sideeffectson projects depending on yours.
Reactorpom.xml :<modules> <module>moduleA</module> <module>moduleC</module> <module>moduleB</module></modules>Ability of Maven to build several sub-modules resolving the order of their dependenciesModules have to be defined in the POMFor a performance reasons
InheritenceShare settings between projects/modulesProjectBusiness1JarWarBusiness2JarWarBy default the parent project is supposed to be in the parent directory (../)pom.xml for module Jar1<parent>  <groupId>X.Y.Z</groupId>  <artifactId>jars</artifactId>  <version>1.0-SNAPSHOT<version></parent>
BuildLifecycle And PluginsPlugin based architecture for a great extensibilityStandardized lifecycle to build all types of archetypes
Whydoes a projectchooseMaven?Apache Maven
Maven, the project’s choiceApplication’s architectureThe project has the freedom to divide the application in modulesMaven doesn’t limit the evolution of the application architectureDependencies managementDeclarative : Maven automatically downloads them and builds the classpathTransitive : We define only what the module needs itself
Maven, the project’s choiceCentralizes and automates all development facets (build, tests, releases)One thing it cannot do for you : to develop BuildsTestsPackagesDeploysDocumentsChecks and reports about the quality of developments
Whydoes a companychooseMaven?Apache Maven
Maven, the corporate’s choiceWidely adopted and knownMany developersDevelopments are standardizedDecrease of costsReuse of knowledgeReuse of configuration fragmentsReuse of process and code fragmentsProduct qualityimprovementReports and monitoring
ecosystemApache Maven
Maven’s ecosytemMavenaloneisnothingYou can integrate it with many tools
repository managerSApache Maven
Repository ManagersBasic servicesSearch artifactsBrowse repositoriesProxy external repositoriesHost internal repositoriesSecuritySeveral productsSonatype Nexus (replaced Proximity)JfrogArtifactoryApache Archiva
Secure your buildsDeploy a repository manager to proxy externals repositories to :Avoid external network outagesAvoid external repository unavailabilitiesTo reduce your company’s external network usageTo increase the speed of artifact downloadsAdditional services offered by such servers :Artifacts procurement to filter what is coming from the outsideStaging repository to validate your release before deploying it
Setup a global mirror<settings> <mirrors>  <mirror>   <!--Thissendseverythingelse to /public -->   <id>global-mirror</id>   <mirrorOf>external:*</mirrorOf>   <url>http://repository.exoplatform.org/content/groups/all</url>  </mirror> </mirrors> <profiles>  <profile>   <id>mirror</id>   <!--Enablesnapshots for the built in central repo to direct -->   <!--allrequests to the repository manager via the mirror -->   <repositories>    <repository>     <id>central</id>     <url>http://central</url>     <releases><enabled>true</enabled></releases>     <snapshots><enabled>true</enabled></snapshots>    </repository>   </repositories>   <pluginRepositories>    <pluginRepository>     <id>central</id>     <url>http://central</url>     <releases><enabled>true</enabled></releases>     <snapshots><enabled>true</enabled></snapshots>    </pluginRepository>   </pluginRepositories>  </profile> </profiles> <activeProfiles>  <!--make the profile active all the time -->  <activeProfile>mirror</activeProfile> </activeProfiles></settings>
Quality managementApache Maven
Automate testsUse automated tests as often as you canMany tools are available through MavenJUnit, TestNG – unit tests, Selenium, Canoo – web GUI test,Fitnesse, Greenpepper – functional tests,SoapUI – web services testsJMeter– performances testsAnd many more frameworks are available to reply your needs
Quality MetricsExtract quality metrics from your project and monitor them :Code style (CheckStyle)Bad practices or potential bugs (PMD, FindBugs, Clirr)Tests coverage (Cobertura, Emma, Clover)…You can use blocking rulesFor example, I break the build if the upward compatibility of public APIs is brokenYou can use reportsReports are available in a web site generated by MavenOr in a quality dashboard like Sonar
Dependency Report
Sonar Dashboard
Continuous integrationApache Maven
Continuous IntegrationSetup a continuous integration server to :Have a neutral and unmodified environment to run your testsQuickly react when The build fails (compilation failure for example)A test failsA quality metric is badContinuously improve the quality of your project and your productivityMany productsHudson, Bamboo, TeamCity, Continuum, Cruisecontrol, …
Hudson
Good & bad practicesApache Maven
KISSApache Maven
K.I.S.S.Keep It Simple, StupidStart from scratchDo not copy/paste what you find without understandingUse only what you needIt’s not because maven offers many features that you need to use themFilteringModulesProfiles…
PROJECT ORGANIZATIONGOOD & BAD PracticesApache Maven
Project bad practicesIgnore Maven conventionsExcept if your are migrating from something else and the target has to be to follow them.Except if they are not compatible with your IDEDifferent versions in sub-modulesIn that case they are standalone projects.Too many inheritance levelsIt makes the POMsmaintenance more complexWhere should I set this plugin parameter ? In which parent ?
Project bad practicesHave too many modulesIs there a good reason ?Technical constraint ?Team organization ?It increases the build timeMany more artifacts to generateDependencies resolution more complexIt involves more complex developmentsMore modules to import in your IDEMore modules to update …
Project good practicesUse the default inheritance :The reactor project is also the parent of its modules.Configuration is easier :No need to redefine SCM settings, site distribution settings …
POM GOOD & BAD PracticesApache Maven
POM bad practicesDependencies :DON’T confuse dependencies and dependencyManagementPlugins :DON’T confuse plugins and pluginManagementDON’T use AntRunplugin everywhereDON’T let Maven choose plugins versions for you
POM bad practicesProfiles :DON’T create environment dependant buildsDON’T rely on dependencies coming from profiles (there is no transitive activation of profiles)Reporting and qualityDON’T activate on an existing project all reports with default configurationDON’T control formatting rules without giving settings for IDEs.DON’T put everything you find in your POM.
POM good practicesSet versions of dependencies in project parent’s dependencyManagementSet dependencies (groupId, artifactId, scope) in each module they are usedUse the dependency plugin (from apache) and versions plugin (from mojo) to analyze, cleanup and update your dependencies.
Development good & bad practicesApache Maven
Development bad practicesDON’T spend your time in the terminal,DON’T exchange libraries through emails,DON’T always use "-Dmaven.test.skip=true” DON’T manually do releases
Development good practicesKeep up-to-date your version of MavenFor example in 2.1 the time of dependencies/modules resolution decreased a lot (Initialization of a project of 150 modules passed from 8 minutes to less than 1)Use the reactor plugin (Maven < 2.1) or native reactor command line options (Maven >= 2.1) to rebuild only a subpart of your project :All modules depending on module XXXAll modules used to build XXX  Try to not use Maven features not supported by your IDE (resources filtering with the plugineclipse:eclipse)
UsecasesApache Maven
Secure your credentialsApache Maven
Secure your credentialsGenerate a private keyarnaud@leopard:~$ mvn--encrypt-master-passwordtoto{dZPuZ74YTJ0HnWHGm4zgfDlruYQNda1xib9vAVf2vvY=}We save the private key in ~/.m2/settings-security.xml<settingssecurity><master>{dZPuZ74YTJ0HnWHGm4zgfDlruYQNda1xib9vAVf2vvY=}</master></settingssecurity>
Secure your credentialsYou can move this key to another drive~/.m2/settings.xml<settingssecurity><relocation>/Volumes/ArnaudUsbKey/secure/settings-security.xml</relocation></settingssecurity>You create an encrypted version of your server passwordarnaud@leopard:~$ mvn--encrypt-password titi{SbC9Fl2jA4oHZtz5Fcefp2q1tMXEtBkz9QiKljPiHss=}You register it in your settings<settings>  ...    <servers>      ...        <server>          <id>mon.server</id>          <username>arnaud</username>          <password>{SbC9Fl2jA4oHZtz5Fcefp2q1tMXEtBkz9QiKljPiHss=}</password>        </server>      ...    </servers>  ...</settings>
Build a part of Your ProjectApache Maven
Reactor options (Maven > 2.1)
ReleasE Your projectApache Maven
Release of awebappin 2002Limited usage of eclipseNoWTP (Onlysomefeaturesin WSAD),Noabilitytoproduce WARs
Release of a webapp in 2002Many manual tasksModify settings filesPackage JARsCopy libraries (external and internal) in a « lib » directoryPackage WAR (often with a zip command)Tag the code (CVS)Send the package on the integration server using FTPDeploy the package with AS console
Release of a webapp in 2002One problem : The are always problemsError in config filesMissing dependenciesMissing fileLast minute fix which created a bugAnd many other possibilies ..How long did it take ?When everything is ok : 15 minutesWhen there’s a problem : ½ day or more
Maven Release PluginAutomates the release process from tagging sources to binaries deliveryRelease plugin main goals:Prepare : To update maven versions and information in POMs and tag the codePerform : To deploy binaries in a maven repositoryAfter that you can just automate the deployment on the AS using cargo for example.
Maven Release Plugin
Configuration and PrerequisitesProject version (must be a SNAPSHOT version)Dependencies and plugins versions mustn’t be SNAPSHOTs
SCM configurationSCM binaries have to be in the PATHSCM credentials have to already be stored or you have to pass them in command line with :–Dusername=XXX –Dpassword=XXX<scm> <connection>scm:svn:http://svn.exoplatform.org/projects/parent/trunk </connection> <developerConnection>scm:svn:http://svn.exoplatform.org/projects/parent/trunk </developerConnection> <url>  http://fisheye.exoplatform.org/browse/projects/parent/trunk </url></scm>
Distribution Management<project> <distributionManagement>  <repository>   <id>repository.exoplatform.org</id>   <url>${exo.releases.repo.url}</url>  </repository> . . . </distributionManagement> . . .  <properties><exo.releases.repo.url>http://repository.exoplatform.org/content/repositories/exo-releases  </exo.releases.repo.url>  . . . </properties></project>
Repository credentials<settings> <servers>  <server>   <!–- id must be the one used in distributionManagement -->   <id>repository.exoplatform.org</id>   <username>aheritier</username>   <password>{ABCDEFGHIJKLMNOPQRSTUVWYZ}</password>  </server> </servers></settings>
Default Release Profile in Super POM<profile> <id>release-profile</id> <activation>  <property>   <name>performRelease</name>   <value>true</value>  </property> </activation> <build>  <plugins>   <!–- Configuration to generate sources and javadoc jars -->   ...  </plugins> </build></profile>
Custom release profile<project> ... <build>  <pluginManagement>   <plugins>    <plugin>     <groupId>org.apache.maven.plugins</groupId>     <artifactId>maven-release-plugin</artifactId>     <version>2.0-beta-9</version>     <configuration>      <useReleaseProfile>false</useReleaseProfile>      <arguments>-Pmyreleaseprofile</arguments>     </configuration>    </plugin>   </plugins>  </pluginManagement> </build>... <profiles>  <profile>   <id>myreleaseprofile</id>   <build>   <!-– what you want to customize the behavior of the build when you do a release -->   </build>  </profile> </profiles> ...</project>
Troubleshooting ReleasesCommon errorsduring release:Buildwith release profile wastestedbefore and failsLocal modificationsCurrent version is not a SNAPSHOTSNAPSHOTs in dependencies and/or pluginsMissingsome configuration (scm, distribMgt, …)Tag alreadyexistsUnable to deployproject to the RepositoryConnectionproblems
To go Further …Apache Maven
DOCUMENTATIONSApache Maven
Some links	The main web site :http://maven.apache.orgProject’s team wiki :http://docs.codehaus.org/display/MAVENProject’suserswiki :http://docs.codehaus.org/display/MAVENUSER
BooksSonatype / O’Reilly :The Definitive Guidehttp://www.sonatype.com/booksFree downloadAvailable in several languagesSoon in French
BooksExist GlobalBetter builds with Mavenhttp://www.maestrodev.com/better-build-mavenFree download
BooksNicolas De loofArnaud HéritierPublished by PearsonCollection RéférenceBased on our own experiences with Maven. From beginners to experts.In French onlyAvailable on 20th November
SupportApache Maven
SupportMailing listshttp://maven.apache.org/mail-lists.htmlIRCirc.codehaus.org - #mavenForumshttp://www.developpez.net/ forum mavenIn FrenchDedicated supportSonatype and some others companies
Back to the FutureApache Maven
productApache Maven
Apache Maven 2.0.xbugs fixLast release : 2.0.10No 2.0.11 planned
Apache Maven 2.xEvolutions, new featuresSeveral important new features in 2.1 likeParallel downloadsEncrypted passwordsLast release : 2.2.12.2.2 in few months, 2.3 in 2010
Apache Maven 3.xDo not be afraid !!!!!Not final before at least one yearFull compatibility with maven 2.x projects
Apache Maven 3.xWhat’s new :How POMs are constructedHow the lifecycle is executedHow the plugin manager executesHow artifacts are resolvedHow it can be embeddedHow dependency injection is done
Apache Maven 3.xWhat it will change for maven users ?Any-source POMVersionless parent elementsMixins : a compositional form of Maven POM configurationBetter IDE integrationError & integrityreportingMuch improvederrorreportingwherewewillprovide links to each identifiable problemwe know of. There are currently 42 commonthingsthatcan go wrong.Don'tallowbuildswhere versions come fromnon-project sources like local settings and CLI parametersDon'tallowbuildswhere versions come from profiles that have to beactivatedmanually
Apache Maven 3.xWhat it will changefor maven developers ?Lifecycle extension pointsPlugin extension pointsIncremental build supportQueryable lifecycleExtensible reporting
CommunityApache Maven
Users community90 days statisticsNumber of subscribers in blueNumber of messages per day in red1780 subscribers on users mailing list
The web site
DowloadsPermonth downloads
The team60 committers,More than 30 active since the beginning of the year,Several organizations like Sonatype, deliver resources and professional support,A community less isolated : more interactions with Eclipse, Jetty,
Commit Statistics
CompetitorsApache Maven
CompetitorsAnt + Ivy, Easy Ant, Gant, Graddle, Buildr…Script orientedYou can do what you want !Reuse many of Maven conventions (directories layout, …) and services (repositories) but without enforcing themThe risk for them :Not being able to evolve due to the too high level of customization proposed to the user.We tried on Maven 1 and it died because of that.It’s like providing a framework without public API.
ConclusionApache Maven
ConclusionToday, Maven is widely adopted in corporate environments,It provides many services,It has an important and really active community of users and developersMany resources to learn to use it and a professional support are availableA product probably far from being perfect but on rails for the futureMany things to doWe need you !
Questions ?Apache Maven
Licence et copyrightsPhotos and logos belong to their respective authors/ownersContent underCreative Commons 3.0Attribution — You must attribute the work in the mannerspecified by the author or licensor (but not in anywaythatsuggeststhattheyendorseyou or your use of the work).Noncommercial — You may not use thiswork for commercial purposes.ShareAlike — If you alter, transform, or builduponthiswork, youmaydistribute the resultingworkonlyunder the same or similarlicense to this one.http://creativecommons.org/licenses/by-nc-sa/3.0/us/
Ad

More Related Content

What's hot (20)

BDD using Cucumber JVM
BDD using Cucumber JVMBDD using Cucumber JVM
BDD using Cucumber JVM
Vijay Krishnan Ramaswamy
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
FastConnect
 
Maven 2 features
Maven 2 featuresMaven 2 features
Maven 2 features
Angel Ruiz
 
Sonar qube to impove code quality
Sonar qube   to impove code qualitySonar qube   to impove code quality
Sonar qube to impove code quality
Mani Sarkar
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
James Cellini
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
Vadym Lotar
 
Introduction to Maven
Introduction to MavenIntroduction to Maven
Introduction to Maven
Mindfire Solutions
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
Sandeep Chawla
 
Using Maven 2
Using Maven 2Using Maven 2
Using Maven 2
andyhot
 
Integration Testing in Python
Integration Testing in PythonIntegration Testing in Python
Integration Testing in Python
Panoptic Development, Inc.
 
Apache maven, a software project management tool
Apache maven, a software project management toolApache maven, a software project management tool
Apache maven, a software project management tool
Renato Primavera
 
Laravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello ProductionLaravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello Production
Joe Ferguson
 
Selenium notes
Selenium notesSelenium notes
Selenium notes
wholcomb
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
Mike Ensor
 
Basics of Selenium IDE,Core, Remote Control
Basics of Selenium IDE,Core, Remote ControlBasics of Selenium IDE,Core, Remote Control
Basics of Selenium IDE,Core, Remote Control
usha kannappan
 
Maven Basics - Explained
Maven Basics - ExplainedMaven Basics - Explained
Maven Basics - Explained
Smita Prasad
 
Automated Testing on Web Applications
Automated Testing on Web ApplicationsAutomated Testing on Web Applications
Automated Testing on Web Applications
Samuel Borg
 
An Introduction to Maven Part 1
An Introduction to Maven Part 1An Introduction to Maven Part 1
An Introduction to Maven Part 1
MD Sayem Ahmed
 
Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with Maven
Sid Anand
 
Selenium With Spices
Selenium With SpicesSelenium With Spices
Selenium With Spices
Nikolajs Okunevs
 
Maven 2 features
Maven 2 featuresMaven 2 features
Maven 2 features
Angel Ruiz
 
Sonar qube to impove code quality
Sonar qube   to impove code qualitySonar qube   to impove code quality
Sonar qube to impove code quality
Mani Sarkar
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
Vadym Lotar
 
Using Maven 2
Using Maven 2Using Maven 2
Using Maven 2
andyhot
 
Apache maven, a software project management tool
Apache maven, a software project management toolApache maven, a software project management tool
Apache maven, a software project management tool
Renato Primavera
 
Laravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello ProductionLaravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello Production
Joe Ferguson
 
Selenium notes
Selenium notesSelenium notes
Selenium notes
wholcomb
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
Mike Ensor
 
Basics of Selenium IDE,Core, Remote Control
Basics of Selenium IDE,Core, Remote ControlBasics of Selenium IDE,Core, Remote Control
Basics of Selenium IDE,Core, Remote Control
usha kannappan
 
Maven Basics - Explained
Maven Basics - ExplainedMaven Basics - Explained
Maven Basics - Explained
Smita Prasad
 
Automated Testing on Web Applications
Automated Testing on Web ApplicationsAutomated Testing on Web Applications
Automated Testing on Web Applications
Samuel Borg
 
An Introduction to Maven Part 1
An Introduction to Maven Part 1An Introduction to Maven Part 1
An Introduction to Maven Part 1
MD Sayem Ahmed
 
Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with Maven
Sid Anand
 

Viewers also liked (20)

Data communication and Mars missions
Data communication and Mars missionsData communication and Mars missions
Data communication and Mars missions
Stephan Gerard
 
Captain Agile and the Providers of Value
Captain Agile and the Providers of ValueCaptain Agile and the Providers of Value
Captain Agile and the Providers of Value
Schalk Cronjé
 
Alpes Jug (29th March, 2010) - Apache Maven
Alpes Jug (29th March, 2010) - Apache MavenAlpes Jug (29th March, 2010) - Apache Maven
Alpes Jug (29th March, 2010) - Apache Maven
Arnaud Héritier
 
Building Android apps with Maven
Building Android apps with MavenBuilding Android apps with Maven
Building Android apps with Maven
Fabrizio Giudici
 
Maven 3.0 at Øredev
Maven 3.0 at ØredevMaven 3.0 at Øredev
Maven 3.0 at Øredev
Matthew McCullough
 
Veni, Vide, Built: Android Gradle Plugin
Veni, Vide, Built: Android Gradle PluginVeni, Vide, Built: Android Gradle Plugin
Veni, Vide, Built: Android Gradle Plugin
Leonardo YongUk Kim
 
Gradle enabled android project
Gradle enabled android projectGradle enabled android project
Gradle enabled android project
Shaka Huang
 
不只自動化而且更敏捷的Android開發工具 gradle mopcon
不只自動化而且更敏捷的Android開發工具 gradle mopcon不只自動化而且更敏捷的Android開發工具 gradle mopcon
不只自動化而且更敏捷的Android開發工具 gradle mopcon
sam chiu
 
Gradle
GradleGradle
Gradle
Vít Kotačka
 
Gradle in 45min
Gradle in 45minGradle in 45min
Gradle in 45min
Schalk Cronjé
 
Lorraine JUG (1st June, 2010) - Maven
Lorraine JUG (1st June, 2010) - MavenLorraine JUG (1st June, 2010) - Maven
Lorraine JUG (1st June, 2010) - Maven
Arnaud Héritier
 
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Carlos Sanchez
 
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Rajmahendra Hegde
 
Gradle - the Enterprise Automation Tool
Gradle  - the Enterprise Automation ToolGradle  - the Enterprise Automation Tool
Gradle - the Enterprise Automation Tool
Izzet Mustafaiev
 
Gradle talk, Javarsovia 2010
Gradle talk, Javarsovia 2010Gradle talk, Javarsovia 2010
Gradle talk, Javarsovia 2010
Tomek Kaczanowski
 
Mastering Maven 2.0 In 1 Hour V1.3
Mastering Maven 2.0 In 1 Hour V1.3Mastering Maven 2.0 In 1 Hour V1.3
Mastering Maven 2.0 In 1 Hour V1.3
Matthew McCullough
 
Drupal Continuous Integration with Jenkins - The Basics
Drupal Continuous Integration with Jenkins - The BasicsDrupal Continuous Integration with Jenkins - The Basics
Drupal Continuous Integration with Jenkins - The Basics
John Smith
 
Gradle by Example
Gradle by ExampleGradle by Example
Gradle by Example
Eric Wendelin
 
Maven Application Lifecycle Management for Alfresco
Maven Application Lifecycle Management for AlfrescoMaven Application Lifecycle Management for Alfresco
Maven Application Lifecycle Management for Alfresco
guest67a9ba
 
Gradle Introduction
Gradle IntroductionGradle Introduction
Gradle Introduction
Dmitry Buzdin
 
Data communication and Mars missions
Data communication and Mars missionsData communication and Mars missions
Data communication and Mars missions
Stephan Gerard
 
Captain Agile and the Providers of Value
Captain Agile and the Providers of ValueCaptain Agile and the Providers of Value
Captain Agile and the Providers of Value
Schalk Cronjé
 
Alpes Jug (29th March, 2010) - Apache Maven
Alpes Jug (29th March, 2010) - Apache MavenAlpes Jug (29th March, 2010) - Apache Maven
Alpes Jug (29th March, 2010) - Apache Maven
Arnaud Héritier
 
Building Android apps with Maven
Building Android apps with MavenBuilding Android apps with Maven
Building Android apps with Maven
Fabrizio Giudici
 
Veni, Vide, Built: Android Gradle Plugin
Veni, Vide, Built: Android Gradle PluginVeni, Vide, Built: Android Gradle Plugin
Veni, Vide, Built: Android Gradle Plugin
Leonardo YongUk Kim
 
Gradle enabled android project
Gradle enabled android projectGradle enabled android project
Gradle enabled android project
Shaka Huang
 
不只自動化而且更敏捷的Android開發工具 gradle mopcon
不只自動化而且更敏捷的Android開發工具 gradle mopcon不只自動化而且更敏捷的Android開發工具 gradle mopcon
不只自動化而且更敏捷的Android開發工具 gradle mopcon
sam chiu
 
Lorraine JUG (1st June, 2010) - Maven
Lorraine JUG (1st June, 2010) - MavenLorraine JUG (1st June, 2010) - Maven
Lorraine JUG (1st June, 2010) - Maven
Arnaud Héritier
 
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Carlos Sanchez
 
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Rajmahendra Hegde
 
Gradle - the Enterprise Automation Tool
Gradle  - the Enterprise Automation ToolGradle  - the Enterprise Automation Tool
Gradle - the Enterprise Automation Tool
Izzet Mustafaiev
 
Gradle talk, Javarsovia 2010
Gradle talk, Javarsovia 2010Gradle talk, Javarsovia 2010
Gradle talk, Javarsovia 2010
Tomek Kaczanowski
 
Mastering Maven 2.0 In 1 Hour V1.3
Mastering Maven 2.0 In 1 Hour V1.3Mastering Maven 2.0 In 1 Hour V1.3
Mastering Maven 2.0 In 1 Hour V1.3
Matthew McCullough
 
Drupal Continuous Integration with Jenkins - The Basics
Drupal Continuous Integration with Jenkins - The BasicsDrupal Continuous Integration with Jenkins - The Basics
Drupal Continuous Integration with Jenkins - The Basics
John Smith
 
Maven Application Lifecycle Management for Alfresco
Maven Application Lifecycle Management for AlfrescoMaven Application Lifecycle Management for Alfresco
Maven Application Lifecycle Management for Alfresco
guest67a9ba
 
Ad

Similar to 20091112 - Mars Jug - Apache Maven (20)

Maven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patternsMaven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patterns
elliando dias
 
Maven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolMaven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension tool
elliando dias
 
Maven
MavenMaven
Maven
Fabio Bonfante
 
What's New in AppFuse 2.0
What's New in AppFuse 2.0What's New in AppFuse 2.0
What's New in AppFuse 2.0
Matt Raible
 
Introduction to maven
Introduction to mavenIntroduction to maven
Introduction to maven
Manos Georgopoulos
 
Mavennotes.pdf
Mavennotes.pdfMavennotes.pdf
Mavennotes.pdf
AnkurSingh656748
 
Rails Plugins 1 Plugin
Rails Plugins 1 PluginRails Plugins 1 Plugin
Rails Plugins 1 Plugin
oscon2007
 
Using Maven2
Using Maven2Using Maven2
Using Maven2
elliando dias
 
Exploring Maven SVN GIT
Exploring Maven SVN GITExploring Maven SVN GIT
Exploring Maven SVN GIT
People Strategists
 
Riga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationRiga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous Integration
Nicolas Fränkel
 
A-Z_Maven.pdf
A-Z_Maven.pdfA-Z_Maven.pdf
A-Z_Maven.pdf
Mithilesh Singh
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
chrisb206 chrisb206
 
Introduction To Eclipse RCP
Introduction To Eclipse RCPIntroduction To Eclipse RCP
Introduction To Eclipse RCP
whbath
 
Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld Presentation
Dan Hinojosa
 
How to setup a development environment for ONAP
How to setup a development environment for ONAPHow to setup a development environment for ONAP
How to setup a development environment for ONAP
Victor Morales
 
Maven 3: New Features - OPITZ CONSULTING - Stefan Scheidt
Maven 3: New Features - OPITZ CONSULTING - Stefan ScheidtMaven 3: New Features - OPITZ CONSULTING - Stefan Scheidt
Maven 3: New Features - OPITZ CONSULTING - Stefan Scheidt
OPITZ CONSULTING Deutschland
 
Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)
Sergio Navarro Pino
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
Jasmine Conseil
 
Maven.pptx
Maven.pptxMaven.pptx
Maven.pptx
piyushkumar613397
 
Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Analysis of-quality-of-pkgs-in-packagist-univ-20171024Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Clark Everetts
 
Maven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patternsMaven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patterns
elliando dias
 
Maven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolMaven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension tool
elliando dias
 
What's New in AppFuse 2.0
What's New in AppFuse 2.0What's New in AppFuse 2.0
What's New in AppFuse 2.0
Matt Raible
 
Rails Plugins 1 Plugin
Rails Plugins 1 PluginRails Plugins 1 Plugin
Rails Plugins 1 Plugin
oscon2007
 
Riga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationRiga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous Integration
Nicolas Fränkel
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
chrisb206 chrisb206
 
Introduction To Eclipse RCP
Introduction To Eclipse RCPIntroduction To Eclipse RCP
Introduction To Eclipse RCP
whbath
 
Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld Presentation
Dan Hinojosa
 
How to setup a development environment for ONAP
How to setup a development environment for ONAPHow to setup a development environment for ONAP
How to setup a development environment for ONAP
Victor Morales
 
Maven 3: New Features - OPITZ CONSULTING - Stefan Scheidt
Maven 3: New Features - OPITZ CONSULTING - Stefan ScheidtMaven 3: New Features - OPITZ CONSULTING - Stefan Scheidt
Maven 3: New Features - OPITZ CONSULTING - Stefan Scheidt
OPITZ CONSULTING Deutschland
 
Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)
Sergio Navarro Pino
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
Jasmine Conseil
 
Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Analysis of-quality-of-pkgs-in-packagist-univ-20171024Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Clark Everetts
 
Ad

More from Arnaud Héritier (20)

From monolith to multi-services, how a platform engineering approach transfor...
From monolith to multi-services, how a platform engineering approach transfor...From monolith to multi-services, how a platform engineering approach transfor...
From monolith to multi-services, how a platform engineering approach transfor...
Arnaud Héritier
 
Devops Recto-Verso @ DevoxxMA
Devops Recto-Verso @ DevoxxMADevops Recto-Verso @ DevoxxMA
Devops Recto-Verso @ DevoxxMA
Arnaud Héritier
 
Java is evolving rapidly: Maven helps you staying on track
Java is evolving rapidly:  Maven helps you staying on trackJava is evolving rapidly:  Maven helps you staying on track
Java is evolving rapidly: Maven helps you staying on track
Arnaud Héritier
 
Quand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsQuand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les rails
Arnaud Héritier
 
Sonar In Action 20110302-vn
Sonar In Action 20110302-vnSonar In Action 20110302-vn
Sonar In Action 20110302-vn
Arnaud Héritier
 
2014 August - eXo Software Factory Overview
2014 August - eXo Software Factory Overview2014 August - eXo Software Factory Overview
2014 August - eXo Software Factory Overview
Arnaud Héritier
 
CRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieCRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - Quickie
Arnaud Héritier
 
LavaJUG-Maven 3.x, will it lives up to its promises
LavaJUG-Maven 3.x, will it lives up to its promisesLavaJUG-Maven 3.x, will it lives up to its promises
LavaJUG-Maven 3.x, will it lives up to its promises
Arnaud Héritier
 
Hands on iOS developments with jenkins
Hands on iOS developments with jenkinsHands on iOS developments with jenkins
Hands on iOS developments with jenkins
Arnaud Héritier
 
eXo Software Factory Overview
eXo Software Factory OvervieweXo Software Factory Overview
eXo Software Factory Overview
Arnaud Héritier
 
Apache Maven - eXo TN presentation
Apache Maven - eXo TN presentationApache Maven - eXo TN presentation
Apache Maven - eXo TN presentation
Arnaud Héritier
 
Mobile developments at eXo
Mobile developments at eXoMobile developments at eXo
Mobile developments at eXo
Arnaud Héritier
 
Jenkins User Meetup - eXo usages of Jenkins
Jenkins User Meetup - eXo usages of JenkinsJenkins User Meetup - eXo usages of Jenkins
Jenkins User Meetup - eXo usages of Jenkins
Arnaud Héritier
 
ToursJUG-Maven 3.x, will it lives up to its promises
ToursJUG-Maven 3.x, will it lives up to its promisesToursJUG-Maven 3.x, will it lives up to its promises
ToursJUG-Maven 3.x, will it lives up to its promises
Arnaud Héritier
 
YaJUG-Maven 3.x, will it lives up to its promises
YaJUG-Maven 3.x, will it lives up to its promisesYaJUG-Maven 3.x, will it lives up to its promises
YaJUG-Maven 3.x, will it lives up to its promises
Arnaud Héritier
 
BordeauxJUG-Maven 3.x, will it lives up to its promises
BordeauxJUG-Maven 3.x, will it lives up to its promisesBordeauxJUG-Maven 3.x, will it lives up to its promises
BordeauxJUG-Maven 3.x, will it lives up to its promises
Arnaud Héritier
 
ToulouseJUG-Maven 3.x, will it lives up to its promises
ToulouseJUG-Maven 3.x, will it lives up to its promisesToulouseJUG-Maven 3.x, will it lives up to its promises
ToulouseJUG-Maven 3.x, will it lives up to its promises
Arnaud Héritier
 
LyonJUG - Maven 3.x, will it live up to its promises?
LyonJUG - Maven 3.x, will it live up to its promises?LyonJUG - Maven 3.x, will it live up to its promises?
LyonJUG - Maven 3.x, will it live up to its promises?
Arnaud Héritier
 
Riviera JUG (20th April, 2010) - Maven
Riviera JUG (20th April, 2010) - MavenRiviera JUG (20th April, 2010) - Maven
Riviera JUG (20th April, 2010) - Maven
Arnaud Héritier
 
Lausanne Jug (08th April, 2010) - Maven
Lausanne Jug (08th April, 2010) - MavenLausanne Jug (08th April, 2010) - Maven
Lausanne Jug (08th April, 2010) - Maven
Arnaud Héritier
 
From monolith to multi-services, how a platform engineering approach transfor...
From monolith to multi-services, how a platform engineering approach transfor...From monolith to multi-services, how a platform engineering approach transfor...
From monolith to multi-services, how a platform engineering approach transfor...
Arnaud Héritier
 
Devops Recto-Verso @ DevoxxMA
Devops Recto-Verso @ DevoxxMADevops Recto-Verso @ DevoxxMA
Devops Recto-Verso @ DevoxxMA
Arnaud Héritier
 
Java is evolving rapidly: Maven helps you staying on track
Java is evolving rapidly:  Maven helps you staying on trackJava is evolving rapidly:  Maven helps you staying on track
Java is evolving rapidly: Maven helps you staying on track
Arnaud Héritier
 
Quand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsQuand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les rails
Arnaud Héritier
 
Sonar In Action 20110302-vn
Sonar In Action 20110302-vnSonar In Action 20110302-vn
Sonar In Action 20110302-vn
Arnaud Héritier
 
2014 August - eXo Software Factory Overview
2014 August - eXo Software Factory Overview2014 August - eXo Software Factory Overview
2014 August - eXo Software Factory Overview
Arnaud Héritier
 
CRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieCRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - Quickie
Arnaud Héritier
 
LavaJUG-Maven 3.x, will it lives up to its promises
LavaJUG-Maven 3.x, will it lives up to its promisesLavaJUG-Maven 3.x, will it lives up to its promises
LavaJUG-Maven 3.x, will it lives up to its promises
Arnaud Héritier
 
Hands on iOS developments with jenkins
Hands on iOS developments with jenkinsHands on iOS developments with jenkins
Hands on iOS developments with jenkins
Arnaud Héritier
 
eXo Software Factory Overview
eXo Software Factory OvervieweXo Software Factory Overview
eXo Software Factory Overview
Arnaud Héritier
 
Apache Maven - eXo TN presentation
Apache Maven - eXo TN presentationApache Maven - eXo TN presentation
Apache Maven - eXo TN presentation
Arnaud Héritier
 
Mobile developments at eXo
Mobile developments at eXoMobile developments at eXo
Mobile developments at eXo
Arnaud Héritier
 
Jenkins User Meetup - eXo usages of Jenkins
Jenkins User Meetup - eXo usages of JenkinsJenkins User Meetup - eXo usages of Jenkins
Jenkins User Meetup - eXo usages of Jenkins
Arnaud Héritier
 
ToursJUG-Maven 3.x, will it lives up to its promises
ToursJUG-Maven 3.x, will it lives up to its promisesToursJUG-Maven 3.x, will it lives up to its promises
ToursJUG-Maven 3.x, will it lives up to its promises
Arnaud Héritier
 
YaJUG-Maven 3.x, will it lives up to its promises
YaJUG-Maven 3.x, will it lives up to its promisesYaJUG-Maven 3.x, will it lives up to its promises
YaJUG-Maven 3.x, will it lives up to its promises
Arnaud Héritier
 
BordeauxJUG-Maven 3.x, will it lives up to its promises
BordeauxJUG-Maven 3.x, will it lives up to its promisesBordeauxJUG-Maven 3.x, will it lives up to its promises
BordeauxJUG-Maven 3.x, will it lives up to its promises
Arnaud Héritier
 
ToulouseJUG-Maven 3.x, will it lives up to its promises
ToulouseJUG-Maven 3.x, will it lives up to its promisesToulouseJUG-Maven 3.x, will it lives up to its promises
ToulouseJUG-Maven 3.x, will it lives up to its promises
Arnaud Héritier
 
LyonJUG - Maven 3.x, will it live up to its promises?
LyonJUG - Maven 3.x, will it live up to its promises?LyonJUG - Maven 3.x, will it live up to its promises?
LyonJUG - Maven 3.x, will it live up to its promises?
Arnaud Héritier
 
Riviera JUG (20th April, 2010) - Maven
Riviera JUG (20th April, 2010) - MavenRiviera JUG (20th April, 2010) - Maven
Riviera JUG (20th April, 2010) - Maven
Arnaud Héritier
 
Lausanne Jug (08th April, 2010) - Maven
Lausanne Jug (08th April, 2010) - MavenLausanne Jug (08th April, 2010) - Maven
Lausanne Jug (08th April, 2010) - Maven
Arnaud Héritier
 

Recently uploaded (20)

Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 

20091112 - Mars Jug - Apache Maven

  • 1. Apache MavenMarsJUGArnaud HéritiereXo platformSoftware Factory Manager
  • 2. Arnaud HéritierCommitter since 2004 and member of the Project Management CommitteeCoauthor of « Apache Maven » published by Pearson (in French)Software Factory Manager at eXo platform In charge of tools and methods
  • 5. DefinitionApache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, binaries, reporting and documentation from a central piece of information.Apache Maven is a command line tool with some IDE integrations.
  • 6. Conventions1 project = 1 artifact (pom, jar, war, ear, …)Standardizeddirectories layoutprojectdescriptor (POM)buildlifecycle6
  • 7. POMAn XML file (pom.xml)DescribingProject identificationProject versionProject descriptionBuild settingsDependencies…<?xml version="1.0" encoding="UTF-8"?><project> <modelVersion>4.0.0</modelVersion> <groupId>org.apache.maven</groupId> <artifactId>webapp-sample</artifactId> <version>1.1-SNAPSHOT</version> <packaging>war</packaging> <name>Simple webapp</name> <inceptionYear>2007</inceptionYear> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-struts</artifactId> <version>2.0.2</version> </dependency> ... </dependencies></project>
  • 9. DependenciesDeclarativesgroupId+artifactId+version (+ classifier)Type (packaging): jar, war, pom, ear, …TransitivesLibAneedsLib BLibBneedsLib CThusLibAneedsLib C
  • 10. DependenciesScopeCompile (by default) : Required to build and run the applicationRuntime : not required to build theapplication but needed at runtimeEx : taglibsProvided : required to build theapplication but not needed at runtime (provided by the container)Ex : Servlet API, Driver SGBD, …Test : required to build and launch tests but not needed by theapplication itself to build and runEx : Junit, TestNG, DbUnit, …System : local library with absolute pathEx : software products
  • 11. ArtifactRepositoryBy default :A central repositoryhttp://repo1.maven.org/maven2Severaldozen of Gb of OSS librariesA local repository${user.home}/.m2/repositoryAll artifactsUsed by maven and its pluginsUsed by yourprojects (dependencies)Produced by yourprojects
  • 12. Artifact RepositoryBy default Maven downloads artifacts required by the project or itself from centralDownloaded artifacts are stored in the local repository
  • 13. VersionsProject and dependency versionsTwo different version variantsSNAPSHOT versionThe version number ends with –SNAPSHOTThe project is in development Deliveries are changing over the time and are overridden after each buildArtifacts are deployed with a timestamp on remote repositoriesRELEASE versionThe version number doesn’t end with –SNAPSHOTBinaries won’t change
  • 15. VersionsAbout SNAPSHOT dependenciesMaven allows the configuration of an update policy. The update policy defines the recurrence of checks if there is a new SNAPSHOT version available on the remote repository :alwaysdaily (by default)interval:X (a given period in minutes)neverMust not be used in a released projectThey can change thus the release also 
  • 16. VersionsRangeFrom … to … Maven automatically searches for the corresponding version (using the update policy for released artifacts)To use with cautionRisk of non reproducibility of the buildRisk of sideeffectson projects depending on yours.
  • 17. Reactorpom.xml :<modules> <module>moduleA</module> <module>moduleC</module> <module>moduleB</module></modules>Ability of Maven to build several sub-modules resolving the order of their dependenciesModules have to be defined in the POMFor a performance reasons
  • 18. InheritenceShare settings between projects/modulesProjectBusiness1JarWarBusiness2JarWarBy default the parent project is supposed to be in the parent directory (../)pom.xml for module Jar1<parent> <groupId>X.Y.Z</groupId> <artifactId>jars</artifactId> <version>1.0-SNAPSHOT<version></parent>
  • 19. BuildLifecycle And PluginsPlugin based architecture for a great extensibilityStandardized lifecycle to build all types of archetypes
  • 21. Maven, the project’s choiceApplication’s architectureThe project has the freedom to divide the application in modulesMaven doesn’t limit the evolution of the application architectureDependencies managementDeclarative : Maven automatically downloads them and builds the classpathTransitive : We define only what the module needs itself
  • 22. Maven, the project’s choiceCentralizes and automates all development facets (build, tests, releases)One thing it cannot do for you : to develop BuildsTestsPackagesDeploysDocumentsChecks and reports about the quality of developments
  • 24. Maven, the corporate’s choiceWidely adopted and knownMany developersDevelopments are standardizedDecrease of costsReuse of knowledgeReuse of configuration fragmentsReuse of process and code fragmentsProduct qualityimprovementReports and monitoring
  • 26. Maven’s ecosytemMavenaloneisnothingYou can integrate it with many tools
  • 28. Repository ManagersBasic servicesSearch artifactsBrowse repositoriesProxy external repositoriesHost internal repositoriesSecuritySeveral productsSonatype Nexus (replaced Proximity)JfrogArtifactoryApache Archiva
  • 29. Secure your buildsDeploy a repository manager to proxy externals repositories to :Avoid external network outagesAvoid external repository unavailabilitiesTo reduce your company’s external network usageTo increase the speed of artifact downloadsAdditional services offered by such servers :Artifacts procurement to filter what is coming from the outsideStaging repository to validate your release before deploying it
  • 30. Setup a global mirror<settings> <mirrors> <mirror> <!--Thissendseverythingelse to /public --> <id>global-mirror</id> <mirrorOf>external:*</mirrorOf> <url>http://repository.exoplatform.org/content/groups/all</url> </mirror> </mirrors> <profiles> <profile> <id>mirror</id> <!--Enablesnapshots for the built in central repo to direct --> <!--allrequests to the repository manager via the mirror --> <repositories> <repository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <!--make the profile active all the time --> <activeProfile>mirror</activeProfile> </activeProfiles></settings>
  • 32. Automate testsUse automated tests as often as you canMany tools are available through MavenJUnit, TestNG – unit tests, Selenium, Canoo – web GUI test,Fitnesse, Greenpepper – functional tests,SoapUI – web services testsJMeter– performances testsAnd many more frameworks are available to reply your needs
  • 33. Quality MetricsExtract quality metrics from your project and monitor them :Code style (CheckStyle)Bad practices or potential bugs (PMD, FindBugs, Clirr)Tests coverage (Cobertura, Emma, Clover)…You can use blocking rulesFor example, I break the build if the upward compatibility of public APIs is brokenYou can use reportsReports are available in a web site generated by MavenOr in a quality dashboard like Sonar
  • 37. Continuous IntegrationSetup a continuous integration server to :Have a neutral and unmodified environment to run your testsQuickly react when The build fails (compilation failure for example)A test failsA quality metric is badContinuously improve the quality of your project and your productivityMany productsHudson, Bamboo, TeamCity, Continuum, Cruisecontrol, …
  • 39. Good & bad practicesApache Maven
  • 41. K.I.S.S.Keep It Simple, StupidStart from scratchDo not copy/paste what you find without understandingUse only what you needIt’s not because maven offers many features that you need to use themFilteringModulesProfiles…
  • 42. PROJECT ORGANIZATIONGOOD & BAD PracticesApache Maven
  • 43. Project bad practicesIgnore Maven conventionsExcept if your are migrating from something else and the target has to be to follow them.Except if they are not compatible with your IDEDifferent versions in sub-modulesIn that case they are standalone projects.Too many inheritance levelsIt makes the POMsmaintenance more complexWhere should I set this plugin parameter ? In which parent ?
  • 44. Project bad practicesHave too many modulesIs there a good reason ?Technical constraint ?Team organization ?It increases the build timeMany more artifacts to generateDependencies resolution more complexIt involves more complex developmentsMore modules to import in your IDEMore modules to update …
  • 45. Project good practicesUse the default inheritance :The reactor project is also the parent of its modules.Configuration is easier :No need to redefine SCM settings, site distribution settings …
  • 46. POM GOOD & BAD PracticesApache Maven
  • 47. POM bad practicesDependencies :DON’T confuse dependencies and dependencyManagementPlugins :DON’T confuse plugins and pluginManagementDON’T use AntRunplugin everywhereDON’T let Maven choose plugins versions for you
  • 48. POM bad practicesProfiles :DON’T create environment dependant buildsDON’T rely on dependencies coming from profiles (there is no transitive activation of profiles)Reporting and qualityDON’T activate on an existing project all reports with default configurationDON’T control formatting rules without giving settings for IDEs.DON’T put everything you find in your POM.
  • 49. POM good practicesSet versions of dependencies in project parent’s dependencyManagementSet dependencies (groupId, artifactId, scope) in each module they are usedUse the dependency plugin (from apache) and versions plugin (from mojo) to analyze, cleanup and update your dependencies.
  • 50. Development good & bad practicesApache Maven
  • 51. Development bad practicesDON’T spend your time in the terminal,DON’T exchange libraries through emails,DON’T always use "-Dmaven.test.skip=true” DON’T manually do releases
  • 52. Development good practicesKeep up-to-date your version of MavenFor example in 2.1 the time of dependencies/modules resolution decreased a lot (Initialization of a project of 150 modules passed from 8 minutes to less than 1)Use the reactor plugin (Maven < 2.1) or native reactor command line options (Maven >= 2.1) to rebuild only a subpart of your project :All modules depending on module XXXAll modules used to build XXX Try to not use Maven features not supported by your IDE (resources filtering with the plugineclipse:eclipse)
  • 55. Secure your credentialsGenerate a private keyarnaud@leopard:~$ mvn--encrypt-master-passwordtoto{dZPuZ74YTJ0HnWHGm4zgfDlruYQNda1xib9vAVf2vvY=}We save the private key in ~/.m2/settings-security.xml<settingssecurity><master>{dZPuZ74YTJ0HnWHGm4zgfDlruYQNda1xib9vAVf2vvY=}</master></settingssecurity>
  • 56. Secure your credentialsYou can move this key to another drive~/.m2/settings.xml<settingssecurity><relocation>/Volumes/ArnaudUsbKey/secure/settings-security.xml</relocation></settingssecurity>You create an encrypted version of your server passwordarnaud@leopard:~$ mvn--encrypt-password titi{SbC9Fl2jA4oHZtz5Fcefp2q1tMXEtBkz9QiKljPiHss=}You register it in your settings<settings> ... <servers> ... <server> <id>mon.server</id> <username>arnaud</username> <password>{SbC9Fl2jA4oHZtz5Fcefp2q1tMXEtBkz9QiKljPiHss=}</password> </server> ... </servers> ...</settings>
  • 57. Build a part of Your ProjectApache Maven
  • 60. Release of awebappin 2002Limited usage of eclipseNoWTP (Onlysomefeaturesin WSAD),Noabilitytoproduce WARs
  • 61. Release of a webapp in 2002Many manual tasksModify settings filesPackage JARsCopy libraries (external and internal) in a « lib » directoryPackage WAR (often with a zip command)Tag the code (CVS)Send the package on the integration server using FTPDeploy the package with AS console
  • 62. Release of a webapp in 2002One problem : The are always problemsError in config filesMissing dependenciesMissing fileLast minute fix which created a bugAnd many other possibilies ..How long did it take ?When everything is ok : 15 minutesWhen there’s a problem : ½ day or more
  • 63. Maven Release PluginAutomates the release process from tagging sources to binaries deliveryRelease plugin main goals:Prepare : To update maven versions and information in POMs and tag the codePerform : To deploy binaries in a maven repositoryAfter that you can just automate the deployment on the AS using cargo for example.
  • 65. Configuration and PrerequisitesProject version (must be a SNAPSHOT version)Dependencies and plugins versions mustn’t be SNAPSHOTs
  • 66. SCM configurationSCM binaries have to be in the PATHSCM credentials have to already be stored or you have to pass them in command line with :–Dusername=XXX –Dpassword=XXX<scm> <connection>scm:svn:http://svn.exoplatform.org/projects/parent/trunk </connection> <developerConnection>scm:svn:http://svn.exoplatform.org/projects/parent/trunk </developerConnection> <url> http://fisheye.exoplatform.org/browse/projects/parent/trunk </url></scm>
  • 67. Distribution Management<project> <distributionManagement> <repository> <id>repository.exoplatform.org</id> <url>${exo.releases.repo.url}</url> </repository> . . . </distributionManagement> . . . <properties><exo.releases.repo.url>http://repository.exoplatform.org/content/repositories/exo-releases </exo.releases.repo.url> . . . </properties></project>
  • 68. Repository credentials<settings> <servers> <server> <!–- id must be the one used in distributionManagement --> <id>repository.exoplatform.org</id> <username>aheritier</username> <password>{ABCDEFGHIJKLMNOPQRSTUVWYZ}</password> </server> </servers></settings>
  • 69. Default Release Profile in Super POM<profile> <id>release-profile</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <build> <plugins> <!–- Configuration to generate sources and javadoc jars --> ... </plugins> </build></profile>
  • 70. Custom release profile<project> ... <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.0-beta-9</version> <configuration> <useReleaseProfile>false</useReleaseProfile> <arguments>-Pmyreleaseprofile</arguments> </configuration> </plugin> </plugins> </pluginManagement> </build>... <profiles> <profile> <id>myreleaseprofile</id> <build> <!-– what you want to customize the behavior of the build when you do a release --> </build> </profile> </profiles> ...</project>
  • 71. Troubleshooting ReleasesCommon errorsduring release:Buildwith release profile wastestedbefore and failsLocal modificationsCurrent version is not a SNAPSHOTSNAPSHOTs in dependencies and/or pluginsMissingsome configuration (scm, distribMgt, …)Tag alreadyexistsUnable to deployproject to the RepositoryConnectionproblems
  • 72. To go Further …Apache Maven
  • 74. Some links The main web site :http://maven.apache.orgProject’s team wiki :http://docs.codehaus.org/display/MAVENProject’suserswiki :http://docs.codehaus.org/display/MAVENUSER
  • 75. BooksSonatype / O’Reilly :The Definitive Guidehttp://www.sonatype.com/booksFree downloadAvailable in several languagesSoon in French
  • 76. BooksExist GlobalBetter builds with Mavenhttp://www.maestrodev.com/better-build-mavenFree download
  • 77. BooksNicolas De loofArnaud HéritierPublished by PearsonCollection RéférenceBased on our own experiences with Maven. From beginners to experts.In French onlyAvailable on 20th November
  • 79. SupportMailing listshttp://maven.apache.org/mail-lists.htmlIRCirc.codehaus.org - #mavenForumshttp://www.developpez.net/ forum mavenIn FrenchDedicated supportSonatype and some others companies
  • 80. Back to the FutureApache Maven
  • 82. Apache Maven 2.0.xbugs fixLast release : 2.0.10No 2.0.11 planned
  • 83. Apache Maven 2.xEvolutions, new featuresSeveral important new features in 2.1 likeParallel downloadsEncrypted passwordsLast release : 2.2.12.2.2 in few months, 2.3 in 2010
  • 84. Apache Maven 3.xDo not be afraid !!!!!Not final before at least one yearFull compatibility with maven 2.x projects
  • 85. Apache Maven 3.xWhat’s new :How POMs are constructedHow the lifecycle is executedHow the plugin manager executesHow artifacts are resolvedHow it can be embeddedHow dependency injection is done
  • 86. Apache Maven 3.xWhat it will change for maven users ?Any-source POMVersionless parent elementsMixins : a compositional form of Maven POM configurationBetter IDE integrationError & integrityreportingMuch improvederrorreportingwherewewillprovide links to each identifiable problemwe know of. There are currently 42 commonthingsthatcan go wrong.Don'tallowbuildswhere versions come fromnon-project sources like local settings and CLI parametersDon'tallowbuildswhere versions come from profiles that have to beactivatedmanually
  • 87. Apache Maven 3.xWhat it will changefor maven developers ?Lifecycle extension pointsPlugin extension pointsIncremental build supportQueryable lifecycleExtensible reporting
  • 89. Users community90 days statisticsNumber of subscribers in blueNumber of messages per day in red1780 subscribers on users mailing list
  • 92. The team60 committers,More than 30 active since the beginning of the year,Several organizations like Sonatype, deliver resources and professional support,A community less isolated : more interactions with Eclipse, Jetty,
  • 95. CompetitorsAnt + Ivy, Easy Ant, Gant, Graddle, Buildr…Script orientedYou can do what you want !Reuse many of Maven conventions (directories layout, …) and services (repositories) but without enforcing themThe risk for them :Not being able to evolve due to the too high level of customization proposed to the user.We tried on Maven 1 and it died because of that.It’s like providing a framework without public API.
  • 97. ConclusionToday, Maven is widely adopted in corporate environments,It provides many services,It has an important and really active community of users and developersMany resources to learn to use it and a professional support are availableA product probably far from being perfect but on rails for the futureMany things to doWe need you !
  • 99. Licence et copyrightsPhotos and logos belong to their respective authors/ownersContent underCreative Commons 3.0Attribution — You must attribute the work in the mannerspecified by the author or licensor (but not in anywaythatsuggeststhattheyendorseyou or your use of the work).Noncommercial — You may not use thiswork for commercial purposes.ShareAlike — If you alter, transform, or builduponthiswork, youmaydistribute the resultingworkonlyunder the same or similarlicense to this one.http://creativecommons.org/licenses/by-nc-sa/3.0/us/