24
Venkaiah Chowdary Koneru Fazreil Amreen Abdul Jalil How maven makes your development group look like a bunch of professionals.

How maven makes your development group look like a bunch of professionals

Embed Size (px)

Citation preview

Page 1: How maven makes your development group look like a bunch of professionals

Venkaiah Chowdary Koneru

Fazreil Amreen Abdul Jalil

How maven makes your development group look like a bunch of professionals.

Page 2: How maven makes your development group look like a bunch of professionals

Agenda

• Maven

• Repository

• Complete Build solution

Page 3: How maven makes your development group look like a bunch of professionals

What’s the Problem?

• Manual handling of external Jars

• Inter-project dependencies

• Running tests

Page 4: How maven makes your development group look like a bunch of professionals

What is Maven ?

• A build tool

• Uniform build system

• Provides quality project information

• Transparent migration to new features

• Guidelines for best practices development

Page 5: How maven makes your development group look like a bunch of professionals

Conceptual Model

• Maven maintains model of a project

• Unique set of coordinates to a project

• Almost zero effort

• Encourages modular design

Page 6: How maven makes your development group look like a bunch of professionals

Default Directory Structure

Source folders

Test related Source folders

Generated class files and artifacts

Structure is based on the archetypes definition

Page 7: How maven makes your development group look like a bunch of professionals

POM

• Fundamental unit of work in maven

• An XML file

• Consists– Project information– Project relationships– Build settings– Build environment

Page 8: How maven makes your development group look like a bunch of professionals

POM

• Fundamental unit of work in maven

• An XML file

• Consists– Project information– Project relationships– Build settings– Build environment

<project ...> <parent /> <groupId /> <artifactId /> <version /> <packaging /> <modules> … </modules><propertie> ... </properties><developers /> <contributors /> <scm> ... </scm> <build>

<plugins> ... </plugins> </build> <dependencies> ... </dependencies> <repositories> ... </repositories> <pluginRepositories> ... </pluginRepositories> <profiles> ... </profiles> <reporting> ... </reporting>

</project>

Page 9: How maven makes your development group look like a bunch of professionals

POM

• Convention over Configuration

• Maven incorporates this by providing default behavior for projects

<project> <modelVersion>4.0.0</modelVersion> <groupId>my.fazreil.projects</groupId><artifactId>fireglass</artifactId><version>0.0.1</version></project>

Just put your sources in the correct directory

Page 10: How maven makes your development group look like a bunch of professionals

Life Cycle

• Contains phases in specific order

• Phase is made up of goals

• 3 built-in life cycles– default– clean and– test

Page 11: How maven makes your development group look like a bunch of professionals

Life Cycle - Defaultvalidate

initialize

compile test-compile

deploy

packagetest

install

Page 12: How maven makes your development group look like a bunch of professionals

Multi-Module Projects

• Why use a modular architecture ?– Separation of concerns– Easier to test– Flexible

• Reusing the configuration– Inheritance– Dependencies

• Aggregation

Page 13: How maven makes your development group look like a bunch of professionals

Multi-Module Projects

archetype

Project

module1 module2

Organization or team wide properties

Project wide properties

Module specific properties

Aggregation

Page 14: How maven makes your development group look like a bunch of professionals

Multi-Module Projects

• Organize your builds

• Speed up builds

• Speedup test process

Page 15: How maven makes your development group look like a bunch of professionals

Maven Repository

• Holds the build artifacts and dependencies

• Two types of repositories– Local – Remote

Page 16: How maven makes your development group look like a bunch of professionals

Local Repository

• Local cache for artifacts

• Can erase it completely

• Useful for offline builds

• Resides in User home’s .m2/ folder

Page 17: How maven makes your development group look like a bunch of professionals

Remote Repository

• Central repository to host all artifacts

• Local repository downloads from the central repository hosted @ maven.org

Local Repository(.m2\repository\)

Remote repository(http://repo1.maven.org/maven2)

Search order

Page 18: How maven makes your development group look like a bunch of professionals

Internal Repository

• Corporate repository

• Proxy for remote repositories

Local Repository(.m2\repository\)

Remote repository(http://repo1.maven.org/maven2)

Search order

Internal Proxy(http://{repository url})

Page 19: How maven makes your development group look like a bunch of professionals

What is Artifactory?

• It is a MAVEN repository

• Think of it as the ‘SVN’ for libraries.

• It is the place to obtain this information:

<dependency>

<groupId>my.fazreil.project</groupId>

<artifactId>fireglass</artifactId>

<version>0.0.1</version>

</dependency>

Page 20: How maven makes your development group look like a bunch of professionals

Do we need our own maven repo?

• Because we want to host our own libraries.

• And we would like to make our libraries available to the local network

• Yes, we can control the access.

Page 21: How maven makes your development group look like a bunch of professionals

Extra notes

• Artifactory acts as a proxy to the outside repository.

• Dependencies requested to Artifactory will be cached in Artifactory for quick retrieval.

Page 22: How maven makes your development group look like a bunch of professionals

Build solution

• Complete end-to-end solution

• 5 open source projects– Maven– Subversion– Hudson– Artifactory– Sonar

Page 23: How maven makes your development group look like a bunch of professionals

Ecosystem

• A typical maven project ecosystem

Source code changes

Automated builds

Publish artifacts

metrics

Distribute artifacts

Page 24: How maven makes your development group look like a bunch of professionals

Maven Release Cycle

• Develop against snapshot versions

• Release stable versions

• Automated releases– Update version numbers to next SNAPSHOT

versions