Building and Managing
Projects with Maven
Agenda
• What is Maven?
• A J2EE example
• Customizing and extending Maven
• Tips and discussions
What is Maven?
• 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).
Build Tools Retrospective
• One level above ant.
• Make  ant  Maven
• (Assembly  C  C++)
Make makefile target
Ant build.xml target
Maven project.xml
maven.xml
goals
Under the Hood
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
Architecture Overview
Build System
Local
Repo
Remote
Repo
maven
project.xml (pom)
maven.xml (goals) http
Site
Artifact Repository
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
- […]
- […]
Artifact Repository
• 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>
Implementing an Example
• 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
Create a New Project
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
Directory Layout
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
– …
Directory Layout
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
…
Project Object Model (POM)
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 Object Model (POM)
• Project Dependency
– Libraries needed for build and runtime.
• Project Reports
– Junit reports
– Javadoc reports
– Checkstyle reports, ….etc
Project Management Section
<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 Management Section
<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</distributionDirectory>
Project Management Section
<project>
[…]
<repository>
<connection>scm:cvs:pserver:anoncvs@cvs.myinc.com:/cvsroot:samples
ervice</connection>
<developerConnection>scm:cvs:pserver:$
{maven.username}@cvs.myinc.com:/cvsroot:sampleservice</develop
erConnection>
<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 Dependency Section
<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.classpa
th>
</properties>
</dependency>
</dependencies>
[…]
Special Dependency:
SNAPSHOT
Project Dependency Section
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
Project Dependency Section
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
Project Build Section
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
Project Build Section
<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
Project Report Section
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>
Project Report - Example
Jakarta Turbine
Project Report - XDoc
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>
Property Processing
${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
Build Process Design
Sample Service project components
Common data module
EJBs
Web Application
Data
(jar)
EJB
(jar)
Webapp
(war)
EAR
Subproject: service-data
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.
Subproject: service-data
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
Subproject: service-ejb
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
Subproject: service-ejb
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)
Subproject: service-ejb
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}
Subproject: service-ejb
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
Subproject: service-ejb
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>
…
Subproject: service-ejb
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>
Subproject: service-web
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
Subproject: service-web
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
Subproject: application
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>
Subproject: application
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
Putting It Together: Reactor
<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">
….
Putting It Together: Reactor
/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:
….
Customizing Maven
• 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.
Real Life Maven
• 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
Summary
• 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.
Get More
• 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/000080.ht
ml
• http://www.javaworld.com/javaworld/jw-10-2002/jw-1011-
maven.html
Questions

More Related Content

PPT
Maven in Mule
PPT
PPT
Maven
PPT
Training in Android with Maven
PPTX
PPTX
Building and Managing Projects with Maven
PPTX
Mule esb
PPTX
Apache Maven
Maven in Mule
Maven
Training in Android with Maven
Building and Managing Projects with Maven
Mule esb
Apache Maven

What's hot (16)

PPT
Introduction tomaven
PDF
PPTX
Building and managing java projects with maven part-III
PDF
The Solar Framework for PHP 5 (2010 Confoo)
PDF
Organinzing Your PHP Projects (2010 Memphis PHP)
PDF
Staying Sane with Drupal NEPHP
PDF
JSF 2.0 Preview
PDF
Jsf2 composite-components
PPTX
Cis 274 intro
PPTX
Apache Maven basics
PDF
Introduction in Apache Maven2
PPTX
SBT by Aform Research, Saulius Valatka
PDF
JavaServer Faces 2.0 - JavaOne India 2011
PDF
Os Haase
PDF
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
PDF
intellimeet
Introduction tomaven
Building and managing java projects with maven part-III
The Solar Framework for PHP 5 (2010 Confoo)
Organinzing Your PHP Projects (2010 Memphis PHP)
Staying Sane with Drupal NEPHP
JSF 2.0 Preview
Jsf2 composite-components
Cis 274 intro
Apache Maven basics
Introduction in Apache Maven2
SBT by Aform Research, Saulius Valatka
JavaServer Faces 2.0 - JavaOne India 2011
Os Haase
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
intellimeet
Ad

Viewers also liked (20)

PPTX
Mule with quartz
PPTX
Java For Begineers
PPT
sets and maps
PPT
Collections
PPTX
Mule esb dataweave
PPTX
Using xslt in mule
PPTX
Database component in mule
PPT
WebServices
PPTX
Filter expression in mule
PPTX
File component in mule
PPTX
WebServices Basic Overview
PPT
Exceptions in java
PPTX
Java Basics in Mule
PPTX
PPT
Core java
PPTX
Mule ESB
PPTX
Web services soap
PPT
WebServices SOAP WSDL and UDDI
PDF
Le sms anniversaire et message automatisé
PPTX
Le Marché du SMS et le Sms Enrichi
Mule with quartz
Java For Begineers
sets and maps
Collections
Mule esb dataweave
Using xslt in mule
Database component in mule
WebServices
Filter expression in mule
File component in mule
WebServices Basic Overview
Exceptions in java
Java Basics in Mule
Core java
Mule ESB
Web services soap
WebServices SOAP WSDL and UDDI
Le sms anniversaire et message automatisé
Le Marché du SMS et le Sms Enrichi
Ad

Similar to Maven (20)

PPT
PPT
Maven introduction in Mule
PPTX
Maven ii
PPTX
Maven ii
PPTX
Maven part 2
PDF
PPTX
Maven project build in automation testing in eclipse
PPT
Mavenppt
PPSX
Maven Presentation - SureFire vs FailSafe
PDF
Maven 3 Overview
PDF
Exploring Maven SVN GIT
PDF
Hands On with Maven
PDF
Java Builds with Maven and Ant
PDF
Apache maven, a software project management tool
PPTX
Maven advanced
PPTX
Maven overview
PDF
A-Z_Maven.pdf
PPTX
Introduction to Maven for beginners and DevOps
PPTX
Maven part 1
PPTX
Maven
Maven introduction in Mule
Maven ii
Maven ii
Maven part 2
Maven project build in automation testing in eclipse
Mavenppt
Maven Presentation - SureFire vs FailSafe
Maven 3 Overview
Exploring Maven SVN GIT
Hands On with Maven
Java Builds with Maven and Ant
Apache maven, a software project management tool
Maven advanced
Maven overview
A-Z_Maven.pdf
Introduction to Maven for beginners and DevOps
Maven part 1
Maven

More from Rajkattamuri (15)

PPTX
Github plugin setup in anypointstudio
PPTX
For each component in mule
PPTX
Choice component in mule
PPT
Java Basics
PPT
WebServices Basics
PPTX
Web services wsdl
PPTX
Web services uddi
PPTX
Mule with drools
PPTX
Mule with rabbitmq
PPTX
Mule with velocity
PPTX
Scatter gather flow control
PPTX
Simple groovy example in mule
PPTX
Validating a soap request in mule
PPTX
Webservice with vm in mule
PPT
multithreading
Github plugin setup in anypointstudio
For each component in mule
Choice component in mule
Java Basics
WebServices Basics
Web services wsdl
Web services uddi
Mule with drools
Mule with rabbitmq
Mule with velocity
Scatter gather flow control
Simple groovy example in mule
Validating a soap request in mule
Webservice with vm in mule
multithreading

Recently uploaded (20)

PDF
Comparative analysis of machine learning models for fake news detection in so...
PDF
Auditboard EB SOX Playbook 2023 edition.
PDF
Transform-Your-Supply-Chain-with-AI-Driven-Quality-Engineering.pdf
PDF
Electrocardiogram sequences data analytics and classification using unsupervi...
PDF
Aug23rd - Mulesoft Community Workshop - Hyd, India.pdf
PDF
“The Future of Visual AI: Efficient Multimodal Intelligence,” a Keynote Prese...
PPTX
Internet of Everything -Basic concepts details
PPTX
MuleSoft-Compete-Deck for midddleware integrations
PDF
Data Virtualization in Action: Scaling APIs and Apps with FME
PDF
giants, standing on the shoulders of - by Daniel Stenberg
PDF
Introduction to MCP and A2A Protocols: Enabling Agent Communication
PDF
Enhancing plagiarism detection using data pre-processing and machine learning...
PDF
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
PDF
Accessing-Finance-in-Jordan-MENA 2024 2025.pdf
PDF
A symptom-driven medical diagnosis support model based on machine learning te...
PPTX
Module 1 Introduction to Web Programming .pptx
PDF
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
PDF
Planning-an-Audit-A-How-To-Guide-Checklist-WP.pdf
PDF
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf
PDF
Convolutional neural network based encoder-decoder for efficient real-time ob...
Comparative analysis of machine learning models for fake news detection in so...
Auditboard EB SOX Playbook 2023 edition.
Transform-Your-Supply-Chain-with-AI-Driven-Quality-Engineering.pdf
Electrocardiogram sequences data analytics and classification using unsupervi...
Aug23rd - Mulesoft Community Workshop - Hyd, India.pdf
“The Future of Visual AI: Efficient Multimodal Intelligence,” a Keynote Prese...
Internet of Everything -Basic concepts details
MuleSoft-Compete-Deck for midddleware integrations
Data Virtualization in Action: Scaling APIs and Apps with FME
giants, standing on the shoulders of - by Daniel Stenberg
Introduction to MCP and A2A Protocols: Enabling Agent Communication
Enhancing plagiarism detection using data pre-processing and machine learning...
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
Accessing-Finance-in-Jordan-MENA 2024 2025.pdf
A symptom-driven medical diagnosis support model based on machine learning te...
Module 1 Introduction to Web Programming .pptx
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
Planning-an-Audit-A-How-To-Guide-Checklist-WP.pdf
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf
Convolutional neural network based encoder-decoder for efficient real-time ob...

Maven

Editor's Notes

  • #4: 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.
  • #5: A good analogy for developers to quickly grasp the level of Maven.
  • #14: The POM consists of four sections.
  • #16: There are only three required elements in POM.
  • #35: The ejb goal is actually a jar task.
  • #36: The build delivers two artifacts: the EJB jar and the Web Service deployment descriptor.