SlideShare a Scribd company logo
Apache Maven
Endrigo Antonini
segunda-feira, 22 de julho de 13
Apache Maven
From the reason to the implementation
Endrigo Antonini
segunda-feira, 22 de julho de 13
Endrigo Antonini
segunda-feira, 22 de julho de 13
Agenda
What is Maven?
Why use Maven?
How POM works?
What is a Repository?
Why using a Local Cache sever?
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is ...
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Was originally designed to simplify the build
processes in the Jakarta Turbine project;
Create a standard way to build the project
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Allow a developer to comprehend the
complete state of the development;
The main goal!!
Endrigo Antonini
segunda-feira, 22 de julho de 13
The main goal!!
What is Maven?
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Build process easy:
Make the build process transparent to
the developer;
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Build process easy:
Make the build process transparent to
the developer;
You still need to know what’s happening
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Uniform build system
Just learn once how the build process
works;
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Uniform build system
Just learn once how the build process
works;
Using the POM (Project Object Model) - we will
talk about this later!
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Provide quality project information
Dependency list;
Unit test, coverage;
Developer list...
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Best practices development
Separate test code of the main code;
Test cases do not affect the main
distribution
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Best practices development
Separate test code of the main code;
Test cases do not affect the main
distribution
Maven also suggests a project structure to easily
work with the projects
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is Maven?
Migration to new features
Easy way to update the maven, plugin,
dependency.
Endrigo Antonini
segunda-feira, 22 de julho de 13
Why use Maven?
Endrigo Antonini
segunda-feira, 22 de julho de 13
Why use Maven?
Well adopted by Java developers;
Make easy to start a project;
Don’t need to download the same lib over and
over again!
Different developers,
same config!
Endrigo Antonini
segunda-feira, 22 de julho de 13
How POM works?
Endrigo Antonini
segunda-feira, 22 de julho de 13
How POM works?
POM -> Project Object Model
XML based
Single file configuration
Structural configuration
Endrigo Antonini
segunda-feira, 22 de julho de 13
How POM works?
Endrigo Antonini
segunda-feira, 22 de julho de 13
Divided in sections:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/
maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.eidoscode.utils</groupId>
<artifactId>generics-utils</artifactId>
<version>1.1.3-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Generics Utils</name>
<description>...</description>
<url>http://www.eidoscode.com/</url>
<inceptionYear>2012</inceptionYear>
<dependencies> ... </dependencies>
<developers> ... </developers>
<build> ... </build>
<reporting> ... </reporting>
</project>
How POM works?
Endrigo Antonini
segunda-feira, 22 de julho de 13
Divided in sections:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/
maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.eidoscode.utils</groupId>
<artifactId>generics-utils</artifactId>
<version>1.1.3-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Generics Utils</name>
<description>...</description>
<url>http://www.eidoscode.com/</url>
<inceptionYear>2012</inceptionYear>
<dependencies> ... </dependencies>
<developers> ... </developers>
<build> ... </build>
<reporting> ... </reporting>
</project>
How POM works?
Endrigo Antonini
segunda-feira, 22 de julho de 13
Divided in sections:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/
maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.eidoscode.utils</groupId>
<artifactId>generics-utils</artifactId>
<version>1.1.3-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Generics Utils</name>
<description>...</description>
<url>http://www.eidoscode.com/</url>
<inceptionYear>2012</inceptionYear>
<dependencies> ... </dependencies>
<developers> ... </developers>
<build> ... </build>
<reporting> ... </reporting>
</project>
How POM works?
Project
Information
Endrigo Antonini
segunda-feira, 22 de julho de 13
Divided in sections:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/
maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.eidoscode.utils</groupId>
<artifactId>generics-utils</artifactId>
<version>1.1.3-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Generics Utils</name>
<description>...</description>
<url>http://www.eidoscode.com/</url>
<inceptionYear>2012</inceptionYear>
<dependencies> ... </dependencies>
<developers> ... </developers>
<build> ... </build>
<reporting> ... </reporting>
</project>
How POM works?
Endrigo Antonini
segunda-feira, 22 de julho de 13
Divided in sections:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/
maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.eidoscode.utils</groupId>
<artifactId>generics-utils</artifactId>
<version>1.1.3-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Generics Utils</name>
<description>...</description>
<url>http://www.eidoscode.com/</url>
<inceptionYear>2012</inceptionYear>
<dependencies> ... </dependencies>
<developers> ... </developers>
<build> ... </build>
<reporting> ... </reporting>
</project>
How POM works?
Main group
Information
Endrigo Antonini
segunda-feira, 22 de julho de 13
Dependency?
Endrigo Antonini
segunda-feira, 22 de julho de 13
Used to indicated the full name of a
dependency, version, and scope
Dependency?
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
Endrigo Antonini
segunda-feira, 22 de julho de 13
Used to indicated the full name of a
dependency, version, and scope
Dependency?
Endrigo Antonini
segunda-feira, 22 de julho de 13
Used to indicated the full name of a
dependency, version, and scope
Dependency?
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
The scope can be devided in:
• compile (default)
• provided
• runtime
• test
• system
• import
Endrigo Antonini
segunda-feira, 22 de julho de 13
Developers?
Endrigo Antonini
segunda-feira, 22 de julho de 13
Used to indicated the team of the project
Developers?
<developers>
<developerser>
<id>eantonini</id>
<name>Endrigo Antonini</name>
<url>http://www.eidoscode.com/</url>
<roles>
<role>Developer</role>
</roles>
</developer>
</developers>
Endrigo Antonini
segunda-feira, 22 de julho de 13
Builds?
Endrigo Antonini
segunda-feira, 22 de julho de 13
Used to indicated plugins configurations about
the build process
Builds?
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Endrigo Antonini
segunda-feira, 22 de julho de 13
Reporting?
Endrigo Antonini
segunda-feira, 22 de julho de 13
Used to indicated plugins configurations about
the generated reports
Reporting?
<reporting><plugins>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9</version>
</plugin>
<plugin>
<artifactId>maven-changes-plugin</artifactId>
<version>2.8</version>
<reportSets><reportSet>
<reports>
<report>github-report</report>
</reports>
</reportSet></reportSets>
</plugin>
</plugins></reporting>
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is a repository?
Endrigo Antonini
segunda-feira, 22 de julho de 13
What is a repository?
Stores libraries and it’s different versions;
There are several repositories throught the
web;
Anyone can create a repository of his own libs;
Easy to download libs;
Easy to distribute libs;
Endrigo Antonini
segunda-feira, 22 de julho de 13
Why using a Local
Cache Server?
Endrigo Antonini
segunda-feira, 22 de julho de 13
Why using a Local
Cache Server?
Reduces the internet conectivity;
Guarantee that all developers use the same lib;
First download is slow (through the internet)
other downloads are faster (local network);
Easy to distribute private libs;
Endrigo Antonini
segunda-feira, 22 de julho de 13
Reference:
Endrigo Antonini
segunda-feira, 22 de julho de 13
Reference:
http://maven.apache.org/
Endrigo Antonini
segunda-feira, 22 de julho de 13
Endrigo Antonini
http://www.linkedin.com/in/endrigoantonini/
http://www.github.com/eidoscode/
http://www.github.com/antonini/
segunda-feira, 22 de julho de 13

More Related Content

Viewers also liked

High Performance Continuous Delivery - Versioning and Release Management Aligned
High Performance Continuous Delivery - Versioning and Release Management AlignedHigh Performance Continuous Delivery - Versioning and Release Management Aligned
High Performance Continuous Delivery - Versioning and Release Management Aligned
Perforce
 
Versioning schemes and branching models for Continuous Delivery - Continuous ...
Versioning schemes and branching models for Continuous Delivery - Continuous ...Versioning schemes and branching models for Continuous Delivery - Continuous ...
Versioning schemes and branching models for Continuous Delivery - Continuous ...
Pavel Chunyayev
 
Introduction to Apache Maven
Introduction to Apache MavenIntroduction to Apache Maven
Introduction to Apache Maven
juvenxu
 
Maven university-course
Maven university-courseMaven university-course
Maven university-course
Olivier Lamy
 
Next Generation Development Infrastructure with the Maven Enterprise Stack
Next Generation Development Infrastructure with the Maven Enterprise StackNext Generation Development Infrastructure with the Maven Enterprise Stack
Next Generation Development Infrastructure with the Maven Enterprise Stack
Tim O'Brien
 
Maven
MavenMaven
Maven
feng lee
 
DevOps Summit 2016 - Release Management em Ambientes Híbridos
DevOps Summit 2016 - Release Management em Ambientes HíbridosDevOps Summit 2016 - Release Management em Ambientes Híbridos
DevOps Summit 2016 - Release Management em Ambientes Híbridos
Igor Rosa Macedo
 
(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012
(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012
(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012
Benjamin Cabé
 
Scalable Semantic Version Control for Linked Data Management (presented at 2n...
Scalable Semantic Version Control for Linked Data Management (presented at 2n...Scalable Semantic Version Control for Linked Data Management (presented at 2n...
Scalable Semantic Version Control for Linked Data Management (presented at 2n...
Claudius Hauptmann
 
Semantic Versioning
Semantic VersioningSemantic Versioning
Semantic Versioning
Christian Baranowski
 
Effective ALM
Effective ALMEffective ALM
Effective ALM
Siddhesh Bhobe
 
Lifecyce Analytics TFS BI webinar
Lifecyce Analytics TFS BI webinarLifecyce Analytics TFS BI webinar
Lifecyce Analytics TFS BI webinar
Angela Dugan
 
Franklyn Korea Power Point
Franklyn Korea Power PointFranklyn Korea Power Point
Franklyn Korea Power Point
mrhaneyrhes
 
Semantic Versioning
Semantic VersioningSemantic Versioning
Semantic Versioning
Drupalize.Me
 
HR Search - 輕鬆管理面試者
HR Search - 輕鬆管理面試者HR Search - 輕鬆管理面試者
HR Search - 輕鬆管理面試者
Mu Chun Wang
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous Delivery
Samanta Cicilia
 
SemVer, the whole story
SemVer, the whole storySemVer, the whole story
SemVer, the whole story
JakeGinnivan
 
Alm tce parallel development
Alm tce parallel developmentAlm tce parallel development
Alm tce parallel development
shalom938
 
XebiCon'16 : Wescale - GoCD démystifié Aurélien Maury, Directeur Technique et...
XebiCon'16 : Wescale - GoCD démystifié Aurélien Maury, Directeur Technique et...XebiCon'16 : Wescale - GoCD démystifié Aurélien Maury, Directeur Technique et...
XebiCon'16 : Wescale - GoCD démystifié Aurélien Maury, Directeur Technique et...
Publicis Sapient Engineering
 
WasteManagement
WasteManagementWasteManagement
WasteManagement
Uday Kumar
 

Viewers also liked (20)

High Performance Continuous Delivery - Versioning and Release Management Aligned
High Performance Continuous Delivery - Versioning and Release Management AlignedHigh Performance Continuous Delivery - Versioning and Release Management Aligned
High Performance Continuous Delivery - Versioning and Release Management Aligned
 
Versioning schemes and branching models for Continuous Delivery - Continuous ...
Versioning schemes and branching models for Continuous Delivery - Continuous ...Versioning schemes and branching models for Continuous Delivery - Continuous ...
Versioning schemes and branching models for Continuous Delivery - Continuous ...
 
Introduction to Apache Maven
Introduction to Apache MavenIntroduction to Apache Maven
Introduction to Apache Maven
 
Maven university-course
Maven university-courseMaven university-course
Maven university-course
 
Next Generation Development Infrastructure with the Maven Enterprise Stack
Next Generation Development Infrastructure with the Maven Enterprise StackNext Generation Development Infrastructure with the Maven Enterprise Stack
Next Generation Development Infrastructure with the Maven Enterprise Stack
 
Maven
MavenMaven
Maven
 
DevOps Summit 2016 - Release Management em Ambientes Híbridos
DevOps Summit 2016 - Release Management em Ambientes HíbridosDevOps Summit 2016 - Release Management em Ambientes Híbridos
DevOps Summit 2016 - Release Management em Ambientes Híbridos
 
(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012
(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012
(E)Git + Tycho + Gerrit + Mylyn = #WIN @ Eclipse Day Toulouse 2012
 
Scalable Semantic Version Control for Linked Data Management (presented at 2n...
Scalable Semantic Version Control for Linked Data Management (presented at 2n...Scalable Semantic Version Control for Linked Data Management (presented at 2n...
Scalable Semantic Version Control for Linked Data Management (presented at 2n...
 
Semantic Versioning
Semantic VersioningSemantic Versioning
Semantic Versioning
 
Effective ALM
Effective ALMEffective ALM
Effective ALM
 
Lifecyce Analytics TFS BI webinar
Lifecyce Analytics TFS BI webinarLifecyce Analytics TFS BI webinar
Lifecyce Analytics TFS BI webinar
 
Franklyn Korea Power Point
Franklyn Korea Power PointFranklyn Korea Power Point
Franklyn Korea Power Point
 
Semantic Versioning
Semantic VersioningSemantic Versioning
Semantic Versioning
 
HR Search - 輕鬆管理面試者
HR Search - 輕鬆管理面試者HR Search - 輕鬆管理面試者
HR Search - 輕鬆管理面試者
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous Delivery
 
SemVer, the whole story
SemVer, the whole storySemVer, the whole story
SemVer, the whole story
 
Alm tce parallel development
Alm tce parallel developmentAlm tce parallel development
Alm tce parallel development
 
XebiCon'16 : Wescale - GoCD démystifié Aurélien Maury, Directeur Technique et...
XebiCon'16 : Wescale - GoCD démystifié Aurélien Maury, Directeur Technique et...XebiCon'16 : Wescale - GoCD démystifié Aurélien Maury, Directeur Technique et...
XebiCon'16 : Wescale - GoCD démystifié Aurélien Maury, Directeur Technique et...
 
WasteManagement
WasteManagementWasteManagement
WasteManagement
 

Similar to Apache Maven - From the reason to the implementation

Instrumentation 101
Instrumentation 101Instrumentation 101
Instrumentation 101
Apkudo
 
Enterprise Maven Repository BOF
Enterprise Maven Repository BOFEnterprise Maven Repository BOF
Enterprise Maven Repository BOF
Max Andersen
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
Mbakaya Kwatukha
 
JMockit
JMockitJMockit
JMockit
Knoldus Inc.
 
Implementing Quality on Java projects
Implementing Quality on Java projectsImplementing Quality on Java projects
Implementing Quality on Java projects
Vincent Massol
 
Continuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and AppiumContinuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and Appium
Emergya
 
Lightweight javaEE with Guice
Lightweight javaEE with GuiceLightweight javaEE with Guice
Lightweight javaEE with Guice
Peerapat Asoktummarungsri
 
Arduino simulation procedure
Arduino simulation procedureArduino simulation procedure
Arduino simulation procedure
SIVA NAGENDRA REDDY
 
Net Beans Jasig Jun2006
Net Beans Jasig Jun2006Net Beans Jasig Jun2006
Net Beans Jasig Jun2006
ardlian
 
API Doc Smackdown
API Doc SmackdownAPI Doc Smackdown
API Doc Smackdown
Ted Husted
 
Opencast Architecture
Opencast ArchitectureOpencast Architecture
Opencast Architecture
GregLogan7
 
Lecture #3 activities and intents
Lecture #3  activities and intentsLecture #3  activities and intents
Lecture #3 activities and intents
Vitali Pekelis
 
GWTcon 2015 - Beyond GWT 3.0 Panic
GWTcon 2015 - Beyond GWT 3.0 PanicGWTcon 2015 - Beyond GWT 3.0 Panic
GWTcon 2015 - Beyond GWT 3.0 Panic
Cristiano Costantini
 
Developing modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular jsDeveloping modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular js
Shekhar Gulati
 
Adopt OpenJDK presentation (slide deck)
Adopt OpenJDK presentation (slide deck)Adopt OpenJDK presentation (slide deck)
Adopt OpenJDK presentation (slide deck)
Mani Sarkar
 
Develop Android/iOS app using golang
Develop Android/iOS app using golangDevelop Android/iOS app using golang
Develop Android/iOS app using golang
SeongJae Park
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
mfrancis
 
Introduction to Protractor - Habilelabs
Introduction to Protractor - HabilelabsIntroduction to Protractor - Habilelabs
Introduction to Protractor - Habilelabs
Habilelabs
 
Boquet manager
Boquet managerBoquet manager
Boquet manager
Orlovsky Consulting GbR
 
SEO methods in Single Page Applications
SEO methods in Single Page ApplicationsSEO methods in Single Page Applications
SEO methods in Single Page Applications
Vyatcheslav Potravnyy
 

Similar to Apache Maven - From the reason to the implementation (20)

Instrumentation 101
Instrumentation 101Instrumentation 101
Instrumentation 101
 
Enterprise Maven Repository BOF
Enterprise Maven Repository BOFEnterprise Maven Repository BOF
Enterprise Maven Repository BOF
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
 
JMockit
JMockitJMockit
JMockit
 
Implementing Quality on Java projects
Implementing Quality on Java projectsImplementing Quality on Java projects
Implementing Quality on Java projects
 
Continuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and AppiumContinuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and Appium
 
Lightweight javaEE with Guice
Lightweight javaEE with GuiceLightweight javaEE with Guice
Lightweight javaEE with Guice
 
Arduino simulation procedure
Arduino simulation procedureArduino simulation procedure
Arduino simulation procedure
 
Net Beans Jasig Jun2006
Net Beans Jasig Jun2006Net Beans Jasig Jun2006
Net Beans Jasig Jun2006
 
API Doc Smackdown
API Doc SmackdownAPI Doc Smackdown
API Doc Smackdown
 
Opencast Architecture
Opencast ArchitectureOpencast Architecture
Opencast Architecture
 
Lecture #3 activities and intents
Lecture #3  activities and intentsLecture #3  activities and intents
Lecture #3 activities and intents
 
GWTcon 2015 - Beyond GWT 3.0 Panic
GWTcon 2015 - Beyond GWT 3.0 PanicGWTcon 2015 - Beyond GWT 3.0 Panic
GWTcon 2015 - Beyond GWT 3.0 Panic
 
Developing modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular jsDeveloping modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular js
 
Adopt OpenJDK presentation (slide deck)
Adopt OpenJDK presentation (slide deck)Adopt OpenJDK presentation (slide deck)
Adopt OpenJDK presentation (slide deck)
 
Develop Android/iOS app using golang
Develop Android/iOS app using golangDevelop Android/iOS app using golang
Develop Android/iOS app using golang
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
Introduction to Protractor - Habilelabs
Introduction to Protractor - HabilelabsIntroduction to Protractor - Habilelabs
Introduction to Protractor - Habilelabs
 
Boquet manager
Boquet managerBoquet manager
Boquet manager
 
SEO methods in Single Page Applications
SEO methods in Single Page ApplicationsSEO methods in Single Page Applications
SEO methods in Single Page Applications
 

Recently uploaded

HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 

Recently uploaded (20)

HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 

Apache Maven - From the reason to the implementation

  • 2. Apache Maven From the reason to the implementation Endrigo Antonini segunda-feira, 22 de julho de 13
  • 4. Agenda What is Maven? Why use Maven? How POM works? What is a Repository? Why using a Local Cache sever? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 5. What is ... Endrigo Antonini segunda-feira, 22 de julho de 13
  • 6. What is Maven? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 7. What is Maven? Was originally designed to simplify the build processes in the Jakarta Turbine project; Create a standard way to build the project Endrigo Antonini segunda-feira, 22 de julho de 13
  • 8. What is Maven? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 9. What is Maven? Allow a developer to comprehend the complete state of the development; The main goal!! Endrigo Antonini segunda-feira, 22 de julho de 13
  • 10. The main goal!! What is Maven? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 11. What is Maven? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 12. What is Maven? Build process easy: Make the build process transparent to the developer; Endrigo Antonini segunda-feira, 22 de julho de 13
  • 13. What is Maven? Build process easy: Make the build process transparent to the developer; You still need to know what’s happening Endrigo Antonini segunda-feira, 22 de julho de 13
  • 14. What is Maven? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 15. What is Maven? Uniform build system Just learn once how the build process works; Endrigo Antonini segunda-feira, 22 de julho de 13
  • 16. What is Maven? Uniform build system Just learn once how the build process works; Using the POM (Project Object Model) - we will talk about this later! Endrigo Antonini segunda-feira, 22 de julho de 13
  • 17. What is Maven? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 18. What is Maven? Provide quality project information Dependency list; Unit test, coverage; Developer list... Endrigo Antonini segunda-feira, 22 de julho de 13
  • 19. What is Maven? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 20. What is Maven? Best practices development Separate test code of the main code; Test cases do not affect the main distribution Endrigo Antonini segunda-feira, 22 de julho de 13
  • 21. What is Maven? Best practices development Separate test code of the main code; Test cases do not affect the main distribution Maven also suggests a project structure to easily work with the projects Endrigo Antonini segunda-feira, 22 de julho de 13
  • 22. What is Maven? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 23. What is Maven? Migration to new features Easy way to update the maven, plugin, dependency. Endrigo Antonini segunda-feira, 22 de julho de 13
  • 24. Why use Maven? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 25. Why use Maven? Well adopted by Java developers; Make easy to start a project; Don’t need to download the same lib over and over again! Different developers, same config! Endrigo Antonini segunda-feira, 22 de julho de 13
  • 26. How POM works? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 27. How POM works? POM -> Project Object Model XML based Single file configuration Structural configuration Endrigo Antonini segunda-feira, 22 de julho de 13
  • 28. How POM works? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 29. Divided in sections: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.eidoscode.utils</groupId> <artifactId>generics-utils</artifactId> <version>1.1.3-SNAPSHOT</version> <packaging>jar</packaging> <name>Generics Utils</name> <description>...</description> <url>http://www.eidoscode.com/</url> <inceptionYear>2012</inceptionYear> <dependencies> ... </dependencies> <developers> ... </developers> <build> ... </build> <reporting> ... </reporting> </project> How POM works? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 30. Divided in sections: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.eidoscode.utils</groupId> <artifactId>generics-utils</artifactId> <version>1.1.3-SNAPSHOT</version> <packaging>jar</packaging> <name>Generics Utils</name> <description>...</description> <url>http://www.eidoscode.com/</url> <inceptionYear>2012</inceptionYear> <dependencies> ... </dependencies> <developers> ... </developers> <build> ... </build> <reporting> ... </reporting> </project> How POM works? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 31. Divided in sections: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.eidoscode.utils</groupId> <artifactId>generics-utils</artifactId> <version>1.1.3-SNAPSHOT</version> <packaging>jar</packaging> <name>Generics Utils</name> <description>...</description> <url>http://www.eidoscode.com/</url> <inceptionYear>2012</inceptionYear> <dependencies> ... </dependencies> <developers> ... </developers> <build> ... </build> <reporting> ... </reporting> </project> How POM works? Project Information Endrigo Antonini segunda-feira, 22 de julho de 13
  • 32. Divided in sections: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.eidoscode.utils</groupId> <artifactId>generics-utils</artifactId> <version>1.1.3-SNAPSHOT</version> <packaging>jar</packaging> <name>Generics Utils</name> <description>...</description> <url>http://www.eidoscode.com/</url> <inceptionYear>2012</inceptionYear> <dependencies> ... </dependencies> <developers> ... </developers> <build> ... </build> <reporting> ... </reporting> </project> How POM works? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 33. Divided in sections: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.eidoscode.utils</groupId> <artifactId>generics-utils</artifactId> <version>1.1.3-SNAPSHOT</version> <packaging>jar</packaging> <name>Generics Utils</name> <description>...</description> <url>http://www.eidoscode.com/</url> <inceptionYear>2012</inceptionYear> <dependencies> ... </dependencies> <developers> ... </developers> <build> ... </build> <reporting> ... </reporting> </project> How POM works? Main group Information Endrigo Antonini segunda-feira, 22 de julho de 13
  • 35. Used to indicated the full name of a dependency, version, and scope Dependency? <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies> Endrigo Antonini segunda-feira, 22 de julho de 13
  • 36. Used to indicated the full name of a dependency, version, and scope Dependency? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 37. Used to indicated the full name of a dependency, version, and scope Dependency? <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies> The scope can be devided in: • compile (default) • provided • runtime • test • system • import Endrigo Antonini segunda-feira, 22 de julho de 13
  • 39. Used to indicated the team of the project Developers? <developers> <developerser> <id>eantonini</id> <name>Endrigo Antonini</name> <url>http://www.eidoscode.com/</url> <roles> <role>Developer</role> </roles> </developer> </developers> Endrigo Antonini segunda-feira, 22 de julho de 13
  • 41. Used to indicated plugins configurations about the build process Builds? <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> Endrigo Antonini segunda-feira, 22 de julho de 13
  • 43. Used to indicated plugins configurations about the generated reports Reporting? <reporting><plugins> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9</version> </plugin> <plugin> <artifactId>maven-changes-plugin</artifactId> <version>2.8</version> <reportSets><reportSet> <reports> <report>github-report</report> </reports> </reportSet></reportSets> </plugin> </plugins></reporting> Endrigo Antonini segunda-feira, 22 de julho de 13
  • 44. What is a repository? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 45. What is a repository? Stores libraries and it’s different versions; There are several repositories throught the web; Anyone can create a repository of his own libs; Easy to download libs; Easy to distribute libs; Endrigo Antonini segunda-feira, 22 de julho de 13
  • 46. Why using a Local Cache Server? Endrigo Antonini segunda-feira, 22 de julho de 13
  • 47. Why using a Local Cache Server? Reduces the internet conectivity; Guarantee that all developers use the same lib; First download is slow (through the internet) other downloads are faster (local network); Easy to distribute private libs; Endrigo Antonini segunda-feira, 22 de julho de 13