SlideShare a Scribd company logo
fli@telenav.cnMAVEN
PrefaceDo you ever begin a new project from scratch?What’s you do before your first line code?Do you maintain the build script in your Team?Which kinds of tool do you use (make, ant, ivy,  maven, mercury,…)
OutlineKey conceptBasic UsageDemo20% usageAnt vs Maven
Key concept
Plugin : (task in Ant)Maven is a plugin execution framework. Adding functionality to Maven is done through the plugin mechanism. (all work is done by plugins)Similar to Ant Task/Ant Target(not exactly) from the user view A collection of goals (tasks)
Plugin
PluginAntMaven<targetname="compile"depends="init"description="compile the source "><!-- Compile the java code from ${src} into ${build} --><javacsrcdir="${src}"destdir="${build}"source="1.6"target="1.6"/></target><build>…<plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>2.1</version><configuration><source>1.6</source><target>1.6</target></configuration></plugin></plugins>…</build>
Lifecycle : the plugin-goal (task) execution sequence<projectname="MyProject"default="dist"basedir="."><description>        simple example build file</description><!-- set global properties for this build --><propertyname="src"location="src"/><propertyname="build"location="build"/><propertyname="dist"location="dist"/><targetname="init"><!-- Create the time stamp --><tstamp/><!-- Create the build directory structure used by compile --><mkdirdir="${build}"/></target><targetname="compile"depends="init"description="compile the source "><!-- Compile the java code from ${src} into ${build} --><javacsrcdir="${src}"destdir="${build}"/></target><targetname="dist"depends="compile"description="generate the distribution"><!-- Create the distribution directory --><mkdirdir="${dist}/lib"/><!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file --><jarjarfile="${dist}/lib/MyProject-${DSTAMP}.jar"basedir="${build}"/></target><targetname="clean"description="clean up"><!-- Delete the ${build} and ${dist} directory trees --><deletedir="${build}"/><deletedir="${dist}"/></target></project>
Lifecycle : the plugin-goal (task) execution sequencegoals( pluginname:goalname)default
LifecycleA lifecycle is made up of phasesThese build phases are executed sequentially (including all of the prior steps)A Build phase is made up of goalsA goal represents a specific task, minimum execute unit (task)A goal is bound to zero (direct invocation) or more build phasesmvn jar:jar  ----------- plugin-goal prefix-name (mvngroupID:artifactID:version:goal)mvn package ----------- lifecycle phase name ,would execute jar:jar, because jar:jar is one contained goal in package phase
Lifecycle: build-in lifecycledefaultcleansite
Lifecycle: build-in binding goals
Lifecycle : adding more goals by pluginPlugin: are artifacts that provide goals (tasks) to Maven  <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>2.7</version><configuration><outputDirectory>doc</outputDirectory><show>public</show><nohelp>true</nohelp><windowtitle>TNT-CAL API doc</windowtitle><doctitle>TNT-CAL API doc</doctitle><maxmemory>256m</maxmemory><sourcepath>src/main/java</sourcepath><charset>utf8</charset><locale>en_us</locale></configuration><executions><execution><id>api-doc</id><phase>prepare-package</phase><goals><goal>javadoc</goal></goals></execution></executions></plugin>
Dependency: no flying jarsNo need download dependency lib one by one, declare it, Maven download for youShrink the project size in svn<dependencies>…<dependency><groupId>com.telenav</groupId><artifactId>ace-client</artifactId><version>1.0.0.15</version><classifier>release</classifier><type>jar</type></dependency><dependency><groupId>com.telenav</groupId><artifactId>kernel</artifactId><version>a1.3-b101</version><type>jar</type></dependency>…</dependencies>
Dependency: transitiveCompile ok, runtime ‘NoClassDefFoundError’ ---- Need transitive jarTransitive (Chain) A -> B -> CTransitive configShortest path A -> B -> C -> D 2.0 and A -> E -> D 1.0Dependency scopeDependency management : inheritance; import
Dependency: transitiveDependency scope (IVY configuration map)C (compile)B (compile)AD (runtime)E (test)compiletestruntime
ProfileDifferent build configuration for different target environmentsDifferent OSDifferent deploy environmentActivation -P CLI optionBased on environment variables…Maven will execute the steps in the profile in addition to the normal steps
Profile<profiles><profile><id>cn-dev</id><activation><property><name>target</name><value>cn-dev</value></property></activation><properties><encoding>gb2312</encoding></properties></profile><profile><id>us-deploy</id><activation><property><name>target</name><value>us-deploy</value></property></activation>			<properties>				<skipTests>true</skipTests>			</properties></profile></profiles>
Basic Usage
Create a projectCreatemvn archetype:generate –DarchetypeArtifactId=maven-archetype-quickstart –DgroupId=com.telenav –DartificatId=rgcProject layouthttp://stackoverflow.com/questions/4182794/in-maven-what-is-the-difference-between-main-resources-and-main-config
Demo : Hello WorldBuildPackageTestReportInstall/Deploy/Releasemvn install: to local repositorymvndeploy: to remote (release) repositorymvn release: deploy and tag the source code by scm.
20% usageEclipse pluginPropertiesRepositoryInheritance & Multiply-moduleWrite a maven-plugin
Eclipse-plugin m2eclipsehttp://m2eclipse.sonatype.org/installing-m2eclipse.htmlAdd-dependency (search)Add-plugin
PropertiesBuild in properties${basedir} represents the directory containing pom.xml${project.basedir} represents the directory containing pom.xmlProject properties<project><version>1.0</version></project> is accessible via ${project.version}.Environment variables${env.PATH}Java System Properties${file.separator}User-defined PropertiesPlugin propertyexpression: ${maven.compiler.target}Setting property
RepositoryAdd repository (Telenav)<repositories> <repository>			<id>telenav</id>			<url>http://tar1.telenav.com:8080/repository</url>			<releases>				<enabled>true</enabled>			</releases>			<snapshots>				<enabled>false</enabled>			</snapshots>		</repository> </repositories>mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> -DgeneratePom=true
Repository (Deploy)Distribution artifacts to release repository<distributionManagement> <repository><id>nexus</id>	<url>http://192.168.109.118:8080/nexus/content/repositories/releases/</url> </repository>  <snapshotRepository>	<id>nexus</id>	<url>http://192.168.109.118:8080/nexus/content/repositories/snapshots/</url>	<uniqueVersion>false</uniqueVersion>  </snapshotRepository></disctributionmanagement>// $M2_HOME/conf/settings.xml// scp password or nexus deploy password or tomcat manage password, dependent on distribute url<servers>	<server>		<id>maven2-snapshot-repository</id>		<username>repoman</username>		<password>mypassword</password>	</server><servers>
Repository (Release)<build>  <plugins>   <plugin>     <artifactId>maven-release-plugin</artifactId>     <version>2.0-beta-9</version>     <configuration>     <tagBase>           http://svn.telenav.com/tnt/Backend/tntcal/tags/tntcal-core</tagBase>     </configuration>   </plugin>  </plugins></build><scm>    <developerConnection>scm:svn:http://svn.telenav.com/tnt/Backend/tntcal/trunk</developerConnection></scm>
RepositoryDependent on not published jar ?mvninstall:install-fileSystem scope (systemPath)File Repository
Inheritance & Multiply-moduleInheritanceDependenciesPlugin lists/executions/configurationProperties (Yes)Profile is not inherited directly but activatedMultiply-Module (Aggregation, a single command:)<parent><groupId>com.telenav</groupId><artifactId>geoalert-masterpom</artifactId><version>1.0.0</version></parent><modules>    <module>my-project</module>       <module>another-project</module> </modules>
Maven-PluginExtends AbstractMojoProject Definition<packaging>maven-plugin</packaging>Parameters : inject by Maven (IOC)Annotation    /*  extra files/folders to classpath     * @parameter     */protected File[]extraClassPathItems;<configuration><extraClassPathItems><extraClassPathItem>src/main/webapp</extraClassPathItem></extraClassPathItems></configuration>               /**	 * Location of class files	 *	 * @parameter expression="${project.build.outputDrectory}"	 * @required	 */private File outputDirectory;
ANT vs MavenDeclarative (Maven) and Imperative (Ant)Convention and configuration (Maven) over configuration and scripting (Ant)Antdist(Defaut)generate-javainitcleancompile<target name=“dist” depends=“generate-java, compile”/>generate-resourcesMavencompilecompiler:compiletestsurefire:testStandard project layoutpakcagesurefire:testinstallBuild-in PhasesBuild-in Goals
Ant vs MavenMavenGood for ModularizationDependency managementNot easy for beginner to understandBugs and issues are hard to track (understand the conventions)Sometimes are slowAntEasy to learn – No so many abstraction
ReferenceReferencehttp://www.sonatype.com/books/mvnref-book/reference/public-book.htmlhttp://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.htmlDeploy use Mavenhttp://jlorenzen.blogspot.com/2007/09/how-to-effectively-use-snapshot.htmlhttp://java.dzone.com/articles/getting-started-nexus-mavenRelease use Mavenhttp://jlorenzen.blogspot.com/2007/09/how-to-create-release-using-maven2.htmlhttp://maven.apache.org/guides/mini/guide-releasing.html

More Related Content

PPT
Jenkins Overview
PPTX
Jenkins tutorial
PPTX
Maven
PPTX
Browser Automation with Playwright – for integration, RPA, UI testing and mor...
PDF
Robot Framework Introduction
PPTX
Jenkins Introduction
PPTX
Maven ppt
PPTX
Jenkins CI
Jenkins Overview
Jenkins tutorial
Maven
Browser Automation with Playwright – for integration, RPA, UI testing and mor...
Robot Framework Introduction
Jenkins Introduction
Maven ppt
Jenkins CI

What's hot (20)

PDF
Playwright: A New Test Automation Framework for the Modern Web
PDF
Jenkins
PDF
Test Automation
PPTX
Jenkins presentation
PDF
Jenkins tutorial
PDF
What's new in selenium 4
PPTX
Testing of React JS app
PPTX
Test Automation and Selenium
PDF
Introduction to GitHub Actions
PPTX
Automated Test Framework with Cucumber
PPT
Maven Introduction
PPSX
PPTX
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
PPTX
Selenium WebDriver avec Java
PPTX
Maven Basics - Explained
PPTX
BDD WITH CUCUMBER AND JAVA
PPTX
Test automation
PDF
Create an architecture for web test automation
ODP
Introduction to Version Control
PPTX
Getting started with Docker
Playwright: A New Test Automation Framework for the Modern Web
Jenkins
Test Automation
Jenkins presentation
Jenkins tutorial
What's new in selenium 4
Testing of React JS app
Test Automation and Selenium
Introduction to GitHub Actions
Automated Test Framework with Cucumber
Maven Introduction
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
Selenium WebDriver avec Java
Maven Basics - Explained
BDD WITH CUCUMBER AND JAVA
Test automation
Create an architecture for web test automation
Introduction to Version Control
Getting started with Docker
Ad

Viewers also liked (12)

PDF
Maven 3 Overview
PPTX
Maven for Dummies
PPTX
Git branching model
PPTX
PDF
Git Branching Model
PPT
Maven Overview
PDF
Mastering Maven 2.0 In 1 Hour V1.3
PPTX
An introduction to Maven
PPT
Demystifying Maven
PPTX
An Introduction to Maven
PDF
메이븐 기본 이해
PDF
Git Branching Model
Maven 3 Overview
Maven for Dummies
Git branching model
Git Branching Model
Maven Overview
Mastering Maven 2.0 In 1 Hour V1.3
An introduction to Maven
Demystifying Maven
An Introduction to Maven
메이븐 기본 이해
Git Branching Model
Ad

Similar to Maven (20)

PPT
Using Maven2
PPTX
(Re)-Introduction to Maven
PDF
Java Builds with Maven and Ant
ODP
Maven in Java EE project
PPTX
PPT
Maven 2.0 - Improve your build patterns
PDF
Introduction to maven, its configuration, lifecycle and relationship to JS world
PPTX
Build Tools & Maven
PDF
Build Automation using Maven
PPTX
PPTX
Java build tools
PDF
Apache maven
PDF
Fundamental of apache maven
PPTX
Maven
PDF
Apache maven, a software project management tool
PPTX
Apache Maven - eXo VN office presentation
PPTX
Introduction to Maven
PDF
Intelligent Projects with Maven - DevFest Istanbul
Using Maven2
(Re)-Introduction to Maven
Java Builds with Maven and Ant
Maven in Java EE project
Maven 2.0 - Improve your build patterns
Introduction to maven, its configuration, lifecycle and relationship to JS world
Build Tools & Maven
Build Automation using Maven
Java build tools
Apache maven
Fundamental of apache maven
Maven
Apache maven, a software project management tool
Apache Maven - eXo VN office presentation
Introduction to Maven
Intelligent Projects with Maven - DevFest Istanbul

More from feng lee (6)

PPTX
Guice in athena
PDF
Bloom filter
PDF
Hadoop 安装
PPTX
Axis2 client memory leak
PPTX
Mysql story in poi dedup
PPTX
Effective java - concurrency
Guice in athena
Bloom filter
Hadoop 安装
Axis2 client memory leak
Mysql story in poi dedup
Effective java - concurrency

Recently uploaded (20)

PPTX
MYSQL Presentation for SQL database connectivity
PDF
Encapsulation_ Review paper, used for researhc scholars
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Electronic commerce courselecture one. Pdf
PPT
Teaching material agriculture food technology
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Big Data Technologies - Introduction.pptx
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Modernizing your data center with Dell and AMD
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Approach and Philosophy of On baking technology
MYSQL Presentation for SQL database connectivity
Encapsulation_ Review paper, used for researhc scholars
“AI and Expert System Decision Support & Business Intelligence Systems”
The Rise and Fall of 3GPP – Time for a Sabbatical?
Chapter 3 Spatial Domain Image Processing.pdf
Electronic commerce courselecture one. Pdf
Teaching material agriculture food technology
Dropbox Q2 2025 Financial Results & Investor Presentation
Big Data Technologies - Introduction.pptx
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
CIFDAQ's Market Insight: SEC Turns Pro Crypto
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Reach Out and Touch Someone: Haptics and Empathic Computing
Advanced methodologies resolving dimensionality complications for autism neur...
Understanding_Digital_Forensics_Presentation.pptx
Modernizing your data center with Dell and AMD
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Approach and Philosophy of On baking technology

Maven

  • 2. PrefaceDo you ever begin a new project from scratch?What’s you do before your first line code?Do you maintain the build script in your Team?Which kinds of tool do you use (make, ant, ivy, maven, mercury,…)
  • 5. Plugin : (task in Ant)Maven is a plugin execution framework. Adding functionality to Maven is done through the plugin mechanism. (all work is done by plugins)Similar to Ant Task/Ant Target(not exactly) from the user view A collection of goals (tasks)
  • 7. PluginAntMaven<targetname="compile"depends="init"description="compile the source "><!-- Compile the java code from ${src} into ${build} --><javacsrcdir="${src}"destdir="${build}"source="1.6"target="1.6"/></target><build>…<plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>2.1</version><configuration><source>1.6</source><target>1.6</target></configuration></plugin></plugins>…</build>
  • 8. Lifecycle : the plugin-goal (task) execution sequence<projectname="MyProject"default="dist"basedir="."><description> simple example build file</description><!-- set global properties for this build --><propertyname="src"location="src"/><propertyname="build"location="build"/><propertyname="dist"location="dist"/><targetname="init"><!-- Create the time stamp --><tstamp/><!-- Create the build directory structure used by compile --><mkdirdir="${build}"/></target><targetname="compile"depends="init"description="compile the source "><!-- Compile the java code from ${src} into ${build} --><javacsrcdir="${src}"destdir="${build}"/></target><targetname="dist"depends="compile"description="generate the distribution"><!-- Create the distribution directory --><mkdirdir="${dist}/lib"/><!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file --><jarjarfile="${dist}/lib/MyProject-${DSTAMP}.jar"basedir="${build}"/></target><targetname="clean"description="clean up"><!-- Delete the ${build} and ${dist} directory trees --><deletedir="${build}"/><deletedir="${dist}"/></target></project>
  • 9. Lifecycle : the plugin-goal (task) execution sequencegoals( pluginname:goalname)default
  • 10. LifecycleA lifecycle is made up of phasesThese build phases are executed sequentially (including all of the prior steps)A Build phase is made up of goalsA goal represents a specific task, minimum execute unit (task)A goal is bound to zero (direct invocation) or more build phasesmvn jar:jar ----------- plugin-goal prefix-name (mvngroupID:artifactID:version:goal)mvn package ----------- lifecycle phase name ,would execute jar:jar, because jar:jar is one contained goal in package phase
  • 13. Lifecycle : adding more goals by pluginPlugin: are artifacts that provide goals (tasks) to Maven <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>2.7</version><configuration><outputDirectory>doc</outputDirectory><show>public</show><nohelp>true</nohelp><windowtitle>TNT-CAL API doc</windowtitle><doctitle>TNT-CAL API doc</doctitle><maxmemory>256m</maxmemory><sourcepath>src/main/java</sourcepath><charset>utf8</charset><locale>en_us</locale></configuration><executions><execution><id>api-doc</id><phase>prepare-package</phase><goals><goal>javadoc</goal></goals></execution></executions></plugin>
  • 14. Dependency: no flying jarsNo need download dependency lib one by one, declare it, Maven download for youShrink the project size in svn<dependencies>…<dependency><groupId>com.telenav</groupId><artifactId>ace-client</artifactId><version>1.0.0.15</version><classifier>release</classifier><type>jar</type></dependency><dependency><groupId>com.telenav</groupId><artifactId>kernel</artifactId><version>a1.3-b101</version><type>jar</type></dependency>…</dependencies>
  • 15. Dependency: transitiveCompile ok, runtime ‘NoClassDefFoundError’ ---- Need transitive jarTransitive (Chain) A -> B -> CTransitive configShortest path A -> B -> C -> D 2.0 and A -> E -> D 1.0Dependency scopeDependency management : inheritance; import
  • 16. Dependency: transitiveDependency scope (IVY configuration map)C (compile)B (compile)AD (runtime)E (test)compiletestruntime
  • 17. ProfileDifferent build configuration for different target environmentsDifferent OSDifferent deploy environmentActivation -P CLI optionBased on environment variables…Maven will execute the steps in the profile in addition to the normal steps
  • 20. Create a projectCreatemvn archetype:generate –DarchetypeArtifactId=maven-archetype-quickstart –DgroupId=com.telenav –DartificatId=rgcProject layouthttp://stackoverflow.com/questions/4182794/in-maven-what-is-the-difference-between-main-resources-and-main-config
  • 21. Demo : Hello WorldBuildPackageTestReportInstall/Deploy/Releasemvn install: to local repositorymvndeploy: to remote (release) repositorymvn release: deploy and tag the source code by scm.
  • 22. 20% usageEclipse pluginPropertiesRepositoryInheritance & Multiply-moduleWrite a maven-plugin
  • 24. PropertiesBuild in properties${basedir} represents the directory containing pom.xml${project.basedir} represents the directory containing pom.xmlProject properties<project><version>1.0</version></project> is accessible via ${project.version}.Environment variables${env.PATH}Java System Properties${file.separator}User-defined PropertiesPlugin propertyexpression: ${maven.compiler.target}Setting property
  • 25. RepositoryAdd repository (Telenav)<repositories> <repository> <id>telenav</id> <url>http://tar1.telenav.com:8080/repository</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> -DgeneratePom=true
  • 26. Repository (Deploy)Distribution artifacts to release repository<distributionManagement> <repository><id>nexus</id> <url>http://192.168.109.118:8080/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>nexus</id> <url>http://192.168.109.118:8080/nexus/content/repositories/snapshots/</url> <uniqueVersion>false</uniqueVersion> </snapshotRepository></disctributionmanagement>// $M2_HOME/conf/settings.xml// scp password or nexus deploy password or tomcat manage password, dependent on distribute url<servers> <server> <id>maven2-snapshot-repository</id> <username>repoman</username> <password>mypassword</password> </server><servers>
  • 27. Repository (Release)<build> <plugins> <plugin> <artifactId>maven-release-plugin</artifactId> <version>2.0-beta-9</version> <configuration> <tagBase> http://svn.telenav.com/tnt/Backend/tntcal/tags/tntcal-core</tagBase> </configuration> </plugin> </plugins></build><scm> <developerConnection>scm:svn:http://svn.telenav.com/tnt/Backend/tntcal/trunk</developerConnection></scm>
  • 28. RepositoryDependent on not published jar ?mvninstall:install-fileSystem scope (systemPath)File Repository
  • 29. Inheritance & Multiply-moduleInheritanceDependenciesPlugin lists/executions/configurationProperties (Yes)Profile is not inherited directly but activatedMultiply-Module (Aggregation, a single command:)<parent><groupId>com.telenav</groupId><artifactId>geoalert-masterpom</artifactId><version>1.0.0</version></parent><modules> <module>my-project</module> <module>another-project</module> </modules>
  • 30. Maven-PluginExtends AbstractMojoProject Definition<packaging>maven-plugin</packaging>Parameters : inject by Maven (IOC)Annotation /* extra files/folders to classpath * @parameter */protected File[]extraClassPathItems;<configuration><extraClassPathItems><extraClassPathItem>src/main/webapp</extraClassPathItem></extraClassPathItems></configuration> /** * Location of class files * * @parameter expression="${project.build.outputDrectory}" * @required */private File outputDirectory;
  • 31. ANT vs MavenDeclarative (Maven) and Imperative (Ant)Convention and configuration (Maven) over configuration and scripting (Ant)Antdist(Defaut)generate-javainitcleancompile<target name=“dist” depends=“generate-java, compile”/>generate-resourcesMavencompilecompiler:compiletestsurefire:testStandard project layoutpakcagesurefire:testinstallBuild-in PhasesBuild-in Goals
  • 32. Ant vs MavenMavenGood for ModularizationDependency managementNot easy for beginner to understandBugs and issues are hard to track (understand the conventions)Sometimes are slowAntEasy to learn – No so many abstraction

Editor's Notes

  • #21: mvncompilemvn packagemvn testmvneclipse:elipse