SlideShare a Scribd company logo
1 of 46
 What is Maven?
 A J2EE example
 Customizing and extending Maven
 Tips and discussions
 A Java project management and
integration build tool.
 Based on the concept of XML Project
Object Model (POM).
 Originally developed for building
Turbine.
 A small core with numerous plugins (in
Jelly).
 One level above ant.
 Make  ant  Maven
 (Assembly  C  C++)
Make makefile target
Ant build.xml target
Maven project.xml
maven.xml
goals
forehead classloader util launcher
maven core, jelly, werkz
Maven
pluginsjava jar war ejb
ear gump xdoclet javadoc
test
jalopy
cactus artifact xdoc
site junit etc…
ant
Build System
Local
Repo
Remote
Repo
maven
project.xml (pom)
maven.xml (goals) http
Site
The Most Important Feature
 Remote Repository
…
<dependencies>
<dependency>
<groupId>xalan</groupId>
<artifactId>xalan</artifactId>
<version>2.5.1</version>
<type>jar</type>
</dependency>
…
</dependencies>
…
${mave.repo.remote}/<groupId>/<type>s/<artifactId>-<version>.<type>
- repository
- […]
- xalan
- jars
- xalan-2.5.0.jar
- xalan-2.5.1.jar
- […]
- […]
 Local Repository
• A local mirror/cache of downloaded
artifacts from remote repositories.
• Located at $
{user.home}/.maven/repository
${mave.repo.local}/<groupId>/<type>s/<artifactId>-<version>.<type>
 Get Started
• Download from
 http://maven.apache.org/start/download.html
• Current version: 1.0rc1
• Environment setup
 export MAVEN_HOME=c:/maven-1.0rc1
 export PATH=“$MAVEN_HOME/bin;$PATH”
(or set MAVEN_HOME = c:maven-1.0rc1
set PATH = %MAVEN_HOME%bin;%PATH% )
• run install_repo.sh to populate the local
repository
Type:
maven genapp
It will prompt for
• project id
• project name
• project package name
A Sample Service J2EE Project
 EJB (stateless session beans exposed as
web services)
 Data components
 Web application
Project Directory Layout
sampleservice
• project.xml - Master POM of the project
• maven.xml - Reactor definition
• project.properties - Properties related to the
project
• application/ - Application component
• service-data/ - Common data component
• service-ejb/ - EJB/WS component
• service-web/ - Web Application component
• target/ - Generated artifact directory
• xdocs/ - Various documents in xml format
• …
A Component Directory Layout
…
service-data - Data component subproject
• project.xml - POM of the data project
• maven.xml - Goals definition
• project.properties - Properties related to the
project
• src/ - Source directory
– conf/ - Configuration and resource files
– java/ - Java source files
– test/ - Test source files
• target/ - Generated artifact directory
• xdocs/ - Various documents in xml format
…
Projects are described as Project Object
Model.
 Project Management
• Detailed description of the project.
• Company information.
• Developer roles and information.
• Mailing list and source control modules
configuration.
 Project Build
• Source code and test code location.
• Resources location
 Project Dependency
• Libraries needed for build and runtime.
 Project Reports
• Junit reports
• Javadoc reports
• Checkstyle reports, ….etc
<project>
<pomVersion>3</pomVersion>
<groupId>sampleservice</groupId>
<name>Sample Service</name> <!-- Used in Javadoc
-->
<id>sampleservice</id>
<currentVersion>1.0</currentVersion>
<!-- Used for document creation -->
<organization>
<name>My, Inc.</name>
<url>http://www.myinc.com</url>
<logo>/images/logo.gif</logo>
</organization>
…
(elements in bold are required)
<project>
[…]
<inceptionYear>2003</inceptionYear> <!-- Used in JavaDoc –
<package>com.myinc.sampleservice</package> <!-- Used in JavaDoc -->
<shortDescription>Demo to use maven</shortDescription> <!-- one liner
-->
<!-- Used in front page-->
<description>
A detailed description about this demo
</description>
<url>http://www.myinc.com/sampleservice/</url>
<issueTrackingUrl/>
<siteAddress>dev.myinc.com</siteAddress> <!-- Used in deployment -->
<siteDirectory>/www/sampleservice/</siteDirectory> <!-- Used in
deployment -->
<!-- Used in deployment. If defined, it overrides ${maven.repo.central} -->
<distributionSite>/www/dist/sampleservice</distributionSite>
<!-- Used in deployment, final distribution directory -->
<distributionDirectory>/www/www.myinc.com/somedir</distributionDir
ectory>
<project>
[…]
<repository>
<connection>scm:cvs:pserver:anoncvs@cvs.myinc.com:/cvsroot:sa
mpleservice</connection>
<developerConnection>scm:cvs:pserver:$
{maven.username}@cvs.myinc.com:/cvsroot:sampleservice</de
veloperConnection>
<url>http://cvs.myinc.org/viewcvs/sampleservice/</url>
</repository>
<!-- Used in maven:dist -->
<versions>
<version>
<id>1.0-beta-1</id>
<name>1.0-beta-1</name>
<tag>1.0-beta-1</tag>
</version>
</versions>
<branches/>
[…]
…
<mailingLists/>
<contributors/>
<developers/>
…
<project>
[…]
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.8</version>
<properties>
<ear.bundle>true</ear.bundle>
<ejb.manifest.classpath>true</ejb.manifest.classp
ath>
</properties>
</dependency>
</dependencies>
[…]
Special Dependency:
SNAPSHOT
Dependency Classloader
[…]
<dependency>
<groupId>bcel</groupId>
<artifactId>bcel</artifactId>
<version>5.1</version>
<properties>
<classloader>root</classloader>
</properties>
</dependency>
[…]
Maven has three classloaders:
root -- ant classloader
root.maven – maven core classloader
default – plugin classloader
Dependency Override
project.xml
…
<dependency>
<groupId>weblogic</groupId>
<artifactId>weblogic</artifactId>
<version>8.1.1</version>
<properties>
<classloader>root</classloader>
</properties>
</dependency>
project.properties
…
## Dependency override
maven.jar.override = on
maven.jar.weblogic = ${weblogic.home}/lib/weblogic.jar
maven.jar.webservices = $
{weblogic.home}/lib/webservices.jar
Defines the location of source, test and resource files.
[…]
<build>
<nagEmailAddress>buildmaster@myinc.com</nagEmailAddress
>
<sourceDirectory>${src.java.dir}</sourceDirectory>
<unitTestSourceDirectory>$
{src.test.dir}</unitTestSourceDirectory>
<aspectSourceDirectory/>
[…] src/aspect
src/test
src/java
<unitTest>
<includes>
<include>**/*Test.java</include>
</includes>
<resources/>
</unitTest>
<resources>
<resource>
<directory>${src.conf.dir}</directory>
<targetPath/>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
src/conf
prefix package name,
e.g. com.myinc.
sampleservice
Defines various reports to be generated
<reports>
<report>maven-jdepend-plugin</report>
<report>maven-checkstyle-plugin</report>
<report>maven-changelog-plugin</report>
<report>maven-developer-activity-
plugin</report>
<report>maven-file-activity-plugin</report>
<report>maven-javadoc-plugin</report>
<report>maven-jxr-plugin</report>
<report>maven-junit-report-plugin</report>
<report>maven-linkcheck-plugin</report>
<report>maven-tasklist-plugin</report>
</reports>
Jakarta Turbine
xdocs/navigation.xml
…
<menu name="General Information">
<item name="Overview" href="/index.html"/>
<item name="Features" href="/features.html"/>
<item name="Specification" href="/fsd.html"/>
<item name="Getting Started" href="/getting-started.html"/>
</menu>
xdocs/features.xml
<document>
<properties>
<title>Turbine Features</title>
<author email="">Jon S. Stevens</author>
</properties>
<body>
<section name="Features">
<p>This document is for bragging about all of Turbine's ….
…
</document>
${project.home}/project.properties Project scope
properties
${project.home}/build.properties Properties
specific to each
build
${user.home}/build.properties Properties
specific to each
user
CLI –Dfoo=bar
The last definition wins
Sample build.properties:
…
bea.home=c:/bea81sp1
oracle.home=c:/oracle/ora9i
Sample Service project components
Common data module
EJBs
Web Application
Data
(jar)
EJB
(jar)
Webapp
(war)
EAR
sampleservice
–project.xml
–maven.xml
–application/
–service-data/
–project.xml
–maven.xml
–src/
–service-ejb/
–service-web/
–xdocs/
project.xml (POM)
<project>
<extend>../project.xml</extend>
<name>Sample Service Data
Module</name>
<id>sampleservice-data</id>
</project>
Note: POM can be inherited.
sampleservice
–project.xml
–maven.xml
–application/
–service-data/
–project.xml
–maven.xml
–src/
–service-ejb/
–service-web/
–xdocs/
maven.xml (Goals)
<project default="build"
xmlns:j="jelly:core"
xmlns:maven="jelly:maven"
xmlns:ant="jelly:ant">
<goal name="build"
prereqs="jar:install"/>
</project>
Note: Goals can also be inherited
Make jar Local
Repo
sampleservice
–project.xml
–maven.xml
–application/
–service-data/
–service-ejb/
–project.xml
–maven.xml
–src/
–service-web/
–xdocs/
project.xml (POM)
<project>
<extend>../project.xml</extend>
<name>Sample Service EJB</name>
<id>sampleservice-ejb</id>
<dependency>
<groupId>${pom.groupId}</groupId>
<artifactId>sampleservice-data</artifactId>
<version>${pom.currentVersion}</version>
<properties>
<ejb.manifest.classpath>true</ejb.manifest
.classpath>
</properties>
</dependency>
</project> Local
Repoxdoclet compile ws-gen ejb-jar
Maven XDoclet Plugin
– Support all standard tags
– Automatically includes generated src dir in compilation src set
– Support util class generation
– Dependencies
– xdoclet-ejb-module-1.2
– xdoclet-web-module-1.2
– xdoclet-bea-module-1.2
(for WebLogic Server Deployment)
Note: Current version 1.2 does not work out-of-box (needed to fix the project.xml)
Maven XDoclet Plugin - Properties
## EJBDoclet
maven.xdoclet.ejbdoclet.fileset.0.include=**/ejb/**/*Bean.java
maven.xdoclet.ejbdoclet.ejbSpec=2.0
maven.xdoclet.ejbdoclet.verbose=true
maven.xdoclet.ejbdoclet.session.0=false
maven.xdoclet.ejbdoclet.localhomeinterface.0=true
maven.xdoclet.ejbdoclet.localinterface.0=true
maven.xdoclet.ejbdoclet.utilobject.0=true
## EJBDoclet WebLogic Nested Element
maven.xdoclet.ejbdoclet.weblogic.0=true
maven.xdoclet.ejbdoclet.weblogic.0.mergeDir=${src.dir}/ejbdoclet
maven.xdoclet.ejbdoclet.weblogic.0.destDir=$
{maven.xdoclet.ejbdoclet.deploymentdescriptor.0.destDir}
Web Services
– Currently Maven has no container specific plugins
<goal name="wsgen" prereqs="wsgen.autotype, wsgen.source2wsdd"/>
<goal name="wsgen.autotype">
<taskdef name="autotype"
classname="weblogic.ant.taskdefs.webservices.javaschema.JavaSchema"/>
….
</goal>
<goal name=“wsgen.source2wsdd”>
…
</goal> project.properties
## Web Services
maven.webservice.javaComponents=
com.myinc.sampleservice.ejb.BasicAccountInquiry,
com.myinc.sampleservice.ejb.ExpandedAccountInquiry,
com.myinc.sampleservice.ejb.DetailedAccountInquiry
maven.webservice.autotype.package=com.myinc.sampleservice.autotype
maven.webservice.autotype.keepgenerated=false
Use tag:
@wlws
sampleservice
–project.xml
–maven.xml
–application/
–service-data/
–service-ejb/
–project.xml
–maven.xml
–src/
–service-web/
–xdocs/
Maven EJB Plugin
– Currently no container specific ejb-jar
<goal name="ejbjar" prereqs="java:compile">
<path id="ejb.classpath">
<pathelement location="${maven.build.dest}"/>
<path refid="maven.dependency.classpath"/>
</path>
<j:set var="maven.ejb.descriptordir"
value="${pom.getPluginContext('maven-xdoclet-plugin')
…./>
<ejbjar srcdir="${maven.build.dest}"
descriptordir="${maven.ejb.descriptordir}"
flatdestdir="true"
basejarname="${pom.artifactId}-${pom.currentVersion}">
<classpath refid="ejb.classpath"/>
<weblogic destdir="${maven.build.dir}“newCMP="true"
outputdir="${maven.build.dir}/ejb" rebuild="false"
ejbcclass="weblogic.ejbc"
</weblogic>
…
sampleservice
–project.xml
–maven.xml
–application/
–service-data/
–service-ejb/
–project.xml
–maven.xml
–src/
–service-web/
–xdocs/
Making the Final EJB Jar
<project default="build“>
<goal name="build" prereqs="ejb:install"/>
<preGoal name="java:compile">
<attainGoal name="xdoclet:ejbdoclet"/>
</preGoal>
<postGoal name="java:compile">
<attainGoal name="wsgen"/>
<attainGoal name="java:jar-resources"/>
</postGoal>
<preGoal name="ejb:ejb">
<attainGoal name="ejbjar"/>
</preGoal>
<postGoal name="ejb:install">
<artifact:install
artifact="${maven.build.dir}/${pom.artifactId}-${pom.currentVersion}.xml"
type="xml“ project="${pom}"/>
</postGoal>
sampleservice
–project.xml
–maven.xml
–application/
–service-data/
–service-ejb/
–service-web/
–project.xml
–maven.xml
–src/
–xdocs/
project.xml (POM)
<project>
<extend>../project.xml</extend>
<name>Sample Service Web Application</name>
<id>sampleservice-web</id>
…
<dependency>
<groupId>${pom.groupId}</groupId>
<artifactId>sampleservice-data</artifactId>
<version>${pom.currentVersion}</version>
</dependency>
<dependency>
<groupId>${pom.groupId}</groupId>
<artifactId>sampleservice-ejb</artifactId>
<version>${pom.currentVersion}</version>
<type>ejb</type>
<properties>
<web-service>true</web-service>
</properties>
</dependency>
custom
property
maven.xml (goals)
<project default=“build”>
<goal name="build" prereqs="war:install"/>
<preGoal name="war:war">
<j:forEach var="dep" items="${pom.dependencies}">
<j:if test="${dep.getProperty('web-service')=='true'}">
<util:file var="xmlFile"
name="${maven.repo.local}/${dep.groupId}/xmls/${dep.artifactId}-
${dep.version}.xml"/>
<j:if test="${xmlFile.exists()}">
<x:parse var="xml" xml="${xmlFile}"/>
<x:forEach var="node" select="$xml/*/*">
<j:set var="temp" value="${root.add(node.detach())}"/>
</x:forEach>
</j:if>
</j:if>
</j:forEach>
<j:if test="${!root.elements().isEmpty()}">
<!– output the “web-services.xml” -->
</j:if>
</preGoal>
preGoal is
used to generate
web services DD
file if defined
sampleservice
–project.xml
–maven.xml
–application/
–project.xml
–maven.xml
–src/
–service-data/
–service-ejb/
–service-web/
–xdocs/
EAR Packaging
<project>
<extend>../project.xml</extend>
<name>Sample Service Application</name>
<id>sampleservice</id>
<!-- Data Component -->
<dependency> <groupId>$
{pom.groupId}</groupId>
<artifactId>sampleservice-data</artifactId>
<version>${pom.currentVersion}</version>
<type>jar</type>
<properties>
<ear.bundle>true</ear.bundle>
</properties>
</dependency>
<!-- EJB Component -->
<dependency>
<groupId>${pom.groupId}</groupId>
<artifactId>sampleservice-ejb</artifactId>
<version>${pom.currentVersion}</version>
<type>ejb</type>
<properties>
<ear.bundle>true</ear.bundle>
</properties>
</dependency>
<!-- WAR Component -->
<dependency>
<groupId>${pom.groupId}</groupId>
<artifactId>sampleservice-web</artifactId>
<version>${pom.currentVersion}</version>
<type>war</type>
<properties>
<ear.bundle>true</ear.bundle>
<ear.appxml.war.context-root>
/${pom.artifactId}
</ear.appxml.war.context-root>
</properties>
</dependency>
sampleservice
–project.xml
–maven.xml
–application/
–project.xml
–maven.xml
–src/
–service-data/
–service-ejb/
–service-web/
–xdocs/
EAR Packaging
<project default=“build”>
<goal name="build" prereqs="ear"/>
<preGoal name="ear:generate-ear-descriptor">
<mkdir dir="${maven.ear.appxml.dir}"/>
</preGoal>
</project>
project.properties
…
## Ear related
maven.ear.appxml.dir = ${maven.build.dir}/application/META-INF
maven.ear.appxml = ${maven.ear.appxml.dir}/application.xml
maven.ear.appxml.generate = true
Tip: container specific DD files can be stored at src/application/META-INF
<goal name="build">
<maven:reactor
basedir="${basedir}"
postProcessing="true"
includes="*/project.xml"
excludes=""
goals="build"
banner="Building"
ignoreFailures="false"/>
</goal>
…
sampleservice
–project.xml
–maven.xml
–application/
–service-data/
–service-ejb/
–service-web/
–xdocs/
<project default=“build”
xmlns:j="jelly:core"
xmlns:maven="jelly:maven"
xmlns:ant="jelly:ant">
….
/c/dev/sampleservice/>maven
__ __
| / |__ _Apache__ ___
| |/| / _`  V / -_) '  ~ intelligent projects ~
|_| |___,_|_/___|_||_| v. 1.0-rc1-SNAPSHOT
Starting the reactor...
Our processing order:
Sample Service Data Module
Sample Service EJB
Sample Service Web Application
Sample Service Application
+----------------------------------------
| Building Sample Service Data Module
| Memory: 3M/4M
+----------------------------------------
build:
java:prepare-filesystem:
[mkdir] Created dir: C:devsampleserviceservice-datatargetclasses
java:compile:
….
 Override plugin properties in
• project.properties
• build.properties
 Use maven.xml
• Override plugin goals
• Intercept plugin goals with <preGoal/>
and <postGoal/>
 Write you own plugin
• In Java, Jelly, or other scripting
language.
 Single artifact per project
• Can be tweaked to deliver multiple
artifacts as long as no type conflicts
• Fine-grained design
 Project Migration/Mavenizing
• Can co-exist with ant
• May require different directory
structure
 Too Slow?
• Use console plugin
 Are you ready for maven?
• Culture change
 Pros
• Work out-of-box for standard projects
• Build assets highly reusable, thanks to
core/plugin architecture
• Build rules are more dynamic
• Best suited for project integration
• IDE friendly
 Cons
• Incomplete documentation
• Missing convenience details
• Not yet mature. Still waiting for the R1.
 http://maven.apache.org
 http://www.onjava.com/pub/a/onjava/2003/10/22/maven
.html
 http://www-106.ibm.com/developerworks/java/library/j-
maven
 http://www.javausergroup.at/events/maven.pdf
 http://www.theserverside.com/articles/article.jsp?
l=MavenMagic
 http://blogs.codehaus.org/people/vmassol/archives/000
080.html
 http://www.javaworld.com/javaworld/jw-10-2002/jw-
1011-maven.html
Maven in Mule

More Related Content

What's hot

Java build tool_comparison
Java build tool_comparisonJava build tool_comparison
Java build tool_comparisonManav Prasad
 
Mule esb
Mule esbMule esb
Mule esbKhan625
 
Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?Max Andersen
 
How to be effective with JBoss Developer Studio
How to be effective with JBoss Developer StudioHow to be effective with JBoss Developer Studio
How to be effective with JBoss Developer StudioMax Andersen
 
Building and managing java projects with maven part-III
Building and managing java projects with maven part-IIIBuilding and managing java projects with maven part-III
Building and managing java projects with maven part-IIIprinceirfancivil
 
Introduction tomaven
Introduction tomavenIntroduction tomaven
Introduction tomavenManav Prasad
 
Enterprise Maven Repository BOF
Enterprise Maven Repository BOFEnterprise Maven Repository BOF
Enterprise Maven Repository BOFMax Andersen
 
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGJava EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGArun Gupta
 
Staying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPStaying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPOscar Merida
 
Resthub framework presentation
Resthub framework presentationResthub framework presentation
Resthub framework presentationSébastien Deleuze
 
Introduction to Apache Ant
Introduction to Apache AntIntroduction to Apache Ant
Introduction to Apache AntShih-Hsiang Lin
 

What's hot (17)

Java build tool_comparison
Java build tool_comparisonJava build tool_comparison
Java build tool_comparison
 
Mule esb
Mule esbMule esb
Mule esb
 
Apache Maven basics
Apache Maven basicsApache Maven basics
Apache Maven basics
 
Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?
 
How to be effective with JBoss Developer Studio
How to be effective with JBoss Developer StudioHow to be effective with JBoss Developer Studio
How to be effective with JBoss Developer Studio
 
Building and managing java projects with maven part-III
Building and managing java projects with maven part-IIIBuilding and managing java projects with maven part-III
Building and managing java projects with maven part-III
 
Build system
Build systemBuild system
Build system
 
Introduction tomaven
Introduction tomavenIntroduction tomaven
Introduction tomaven
 
Cis 274 intro
Cis 274   introCis 274   intro
Cis 274 intro
 
Apache Maven for AT/QC
Apache Maven for AT/QCApache Maven for AT/QC
Apache Maven for AT/QC
 
Enterprise Maven Repository BOF
Enterprise Maven Repository BOFEnterprise Maven Repository BOF
Enterprise Maven Repository BOF
 
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGJava EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
 
Staying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPStaying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHP
 
Pom
PomPom
Pom
 
Resthub lyonjug
Resthub lyonjugResthub lyonjug
Resthub lyonjug
 
Resthub framework presentation
Resthub framework presentationResthub framework presentation
Resthub framework presentation
 
Introduction to Apache Ant
Introduction to Apache AntIntroduction to Apache Ant
Introduction to Apache Ant
 

Similar to Maven in Mule

Maven introduction in Mule
Maven introduction in MuleMaven introduction in Mule
Maven introduction in MuleShahid Shaik
 
Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with MavenSid Anand
 
Juggling Java EE with Enterprise Apache Maven
Juggling Java EE with Enterprise Apache MavenJuggling Java EE with Enterprise Apache Maven
Juggling Java EE with Enterprise Apache Mavenelliando dias
 
Developing Liferay Plugins with Maven
Developing Liferay Plugins with MavenDeveloping Liferay Plugins with Maven
Developing Liferay Plugins with MavenMika Koivisto
 
Introduction to Maven
Introduction to MavenIntroduction to Maven
Introduction to MavenSperasoft
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulMert Çalışkan
 
Introduction To Maven2
Introduction To Maven2Introduction To Maven2
Introduction To Maven2Shuji Watanabe
 
Java, Eclipse, Maven & JSF tutorial
Java, Eclipse, Maven & JSF tutorialJava, Eclipse, Maven & JSF tutorial
Java, Eclipse, Maven & JSF tutorialRaghavan Mohan
 
Pom configuration java xml
Pom configuration java xmlPom configuration java xml
Pom configuration java xmlakmini
 

Similar to Maven in Mule (20)

Maven
MavenMaven
Maven
 
Maven introduction in Mule
Maven introduction in MuleMaven introduction in Mule
Maven introduction in Mule
 
Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with Maven
 
Maven ii
Maven iiMaven ii
Maven ii
 
Maven ii
Maven iiMaven ii
Maven ii
 
Maven part 2
Maven part 2Maven part 2
Maven part 2
 
Liferay maven sdk
Liferay maven sdkLiferay maven sdk
Liferay maven sdk
 
intellimeet
intellimeetintellimeet
intellimeet
 
Releasing Projects Using Maven
Releasing Projects Using MavenReleasing Projects Using Maven
Releasing Projects Using Maven
 
Oracle 12c Launch Event 02 ADF 12c and Maven in Jdeveloper / By Aino Andriessen
Oracle 12c Launch Event 02 ADF 12c and Maven in Jdeveloper / By Aino Andriessen Oracle 12c Launch Event 02 ADF 12c and Maven in Jdeveloper / By Aino Andriessen
Oracle 12c Launch Event 02 ADF 12c and Maven in Jdeveloper / By Aino Andriessen
 
Juggling Java EE with Enterprise Apache Maven
Juggling Java EE with Enterprise Apache MavenJuggling Java EE with Enterprise Apache Maven
Juggling Java EE with Enterprise Apache Maven
 
Developing Liferay Plugins with Maven
Developing Liferay Plugins with MavenDeveloping Liferay Plugins with Maven
Developing Liferay Plugins with Maven
 
Introduction to Maven
Introduction to MavenIntroduction to Maven
Introduction to Maven
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest Istanbul
 
Introduction To Maven2
Introduction To Maven2Introduction To Maven2
Introduction To Maven2
 
Java, Eclipse, Maven & JSF tutorial
Java, Eclipse, Maven & JSF tutorialJava, Eclipse, Maven & JSF tutorial
Java, Eclipse, Maven & JSF tutorial
 
Maven
MavenMaven
Maven
 
Pom configuration java xml
Pom configuration java xmlPom configuration java xml
Pom configuration java xml
 
Maven part 3
Maven part 3Maven part 3
Maven part 3
 
Maven iii
Maven iiiMaven iii
Maven iii
 

More from Anand kalla

Unit testing using Munit Part 1
Unit testing using Munit Part 1Unit testing using Munit Part 1
Unit testing using Munit Part 1Anand kalla
 
Java Fundamentals in Mule
Java Fundamentals in MuleJava Fundamentals in Mule
Java Fundamentals in MuleAnand kalla
 
SOAP Service in Mule Esb
SOAP Service in Mule EsbSOAP Service in Mule Esb
SOAP Service in Mule EsbAnand kalla
 
UDDI in Mule Esb
UDDI in Mule EsbUDDI in Mule Esb
UDDI in Mule EsbAnand kalla
 
WSDL in Mule Esb
WSDL in Mule EsbWSDL in Mule Esb
WSDL in Mule EsbAnand kalla
 
Send email attachment using smtp in mule esb
Send email attachment using smtp  in mule esbSend email attachment using smtp  in mule esb
Send email attachment using smtp in mule esbAnand kalla
 
Mule oracle connectors
Mule oracle connectorsMule oracle connectors
Mule oracle connectorsAnand kalla
 
Mule google connectors
Mule google connectorsMule google connectors
Mule google connectorsAnand kalla
 
Mule database-connectors
Mule database-connectorsMule database-connectors
Mule database-connectorsAnand kalla
 
Mule batch processing
Mule batch processingMule batch processing
Mule batch processingAnand kalla
 
Mule architecture
Mule architectureMule architecture
Mule architectureAnand kalla
 
Mule anypoint exchange
Mule anypoint exchangeMule anypoint exchange
Mule anypoint exchangeAnand kalla
 
Mule security saml
Mule security samlMule security saml
Mule security samlAnand kalla
 
Mule security jaas
Mule security jaasMule security jaas
Mule security jaasAnand kalla
 
Mule for each scope header collection
Mule for each scope header collectionMule for each scope header collection
Mule for each scope header collectionAnand kalla
 

More from Anand kalla (20)

Unit testing using Munit Part 1
Unit testing using Munit Part 1Unit testing using Munit Part 1
Unit testing using Munit Part 1
 
Java Fundamentals in Mule
Java Fundamentals in MuleJava Fundamentals in Mule
Java Fundamentals in Mule
 
Java in Mule
Java in MuleJava in Mule
Java in Mule
 
web services
web servicesweb services
web services
 
SOAP Service in Mule Esb
SOAP Service in Mule EsbSOAP Service in Mule Esb
SOAP Service in Mule Esb
 
UDDI in Mule Esb
UDDI in Mule EsbUDDI in Mule Esb
UDDI in Mule Esb
 
WSDL in Mule Esb
WSDL in Mule EsbWSDL in Mule Esb
WSDL in Mule Esb
 
Send email attachment using smtp in mule esb
Send email attachment using smtp  in mule esbSend email attachment using smtp  in mule esb
Send email attachment using smtp in mule esb
 
Mule oracle connectors
Mule oracle connectorsMule oracle connectors
Mule oracle connectors
 
Mule google connectors
Mule google connectorsMule google connectors
Mule google connectors
 
Mule execution
Mule executionMule execution
Mule execution
 
Mule database-connectors
Mule database-connectorsMule database-connectors
Mule database-connectors
 
Mule batch processing
Mule batch processingMule batch processing
Mule batch processing
 
Mule architecture
Mule architectureMule architecture
Mule architecture
 
Mule anypoint exchange
Mule anypoint exchangeMule anypoint exchange
Mule anypoint exchange
 
Mule soap
Mule soapMule soap
Mule soap
 
Mule soa
Mule soaMule soa
Mule soa
 
Mule security saml
Mule security samlMule security saml
Mule security saml
 
Mule security jaas
Mule security jaasMule security jaas
Mule security jaas
 
Mule for each scope header collection
Mule for each scope header collectionMule for each scope header collection
Mule for each scope header collection
 

Recently uploaded

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 

Recently uploaded (20)

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 

Maven in Mule

Editor's Notes

  1. Two scenarios drove Maven to us: As a Java developer who is involved with building the application. Like to be able to reuse the build scripts, as simple as making a Java API call. As a project manager/team lead who is trying to keep up-to-date with inter-dependencies among components.
  2. A good analogy for developers to quickly grasp the level of Maven.
  3. The POM consists of four sections.
  4. There are only three required elements in POM.
  5. The ejb goal is actually a jar task.
  6. The build delivers two artifacts: the EJB jar and the Web Service deployment descriptor.