maven: from scratch to production (.pdf)

26
by: Johan Mynhardt | Durban JUG Meeting | 12 May 2011| Maven From Scratch to Production

Upload: johan-mynhardt

Post on 17-Dec-2014

1.279 views

Category:

Technology


2 download

DESCRIPTION

My presentation on Maven for the Durban Java User Group meeting, held at Thumbtribe's offices. As I'm not happy with everything as-is, my aim is to improve the presentation with an accompanying project which I need to set up in a proper environment so that it can serve as a fully functional example. To follow progress, keep an eye on the following blog post: http://johanmynhardt.blogspot.com/2011/05/maven-from-scratch-to-production.html

TRANSCRIPT

Page 1: Maven: from Scratch to Production (.pdf)

by: Johan Mynhardt |Durban JUG Meeting |

12 May 2011|

MavenFrom Scratch to Production

Page 2: Maven: from Scratch to Production (.pdf)

• Ripe ground for flame-war

• Argumenting that:• X is better than Y.• Y is better than X.• I can do this with X by making use of Z.

• A session to convince you

What this is *not*

Page 3: Maven: from Scratch to Production (.pdf)

• Set up a Maven project

• Set up the CI environment with Apache Continuum

• See everything in action!

Objectives

Page 4: Maven: from Scratch to Production (.pdf)

• Java EE 6 • Glassfish Application Server• EJB 3.1• JSF 2.0

• PrimeFaces

• Continuous Integration and Project Management (from development perspective)• Apache Continuum• Apache Maven

Project Technologies

Page 5: Maven: from Scratch to Production (.pdf)

• Making the build process easy

• Providing a uniform build system

• Providing quality project information

• Providing guidelines for best practices development

Maven's Objectives

http://maven.apache.org/what-is-maven.html

Page 6: Maven: from Scratch to Production (.pdf)

Setting up the Project: HelloWorld

• Create the project root by running the following:

~/$ cd workspace~/workspace$ mvn archetype:generate \-Dversion=1.0-SNAPSHOT \-DgroupId=za.co.thumbtribe.djug \-DartifactId=HelloWorld

~/$ cd workspace~/workspace$ mvn archetype:generate \-Dversion=1.0-SNAPSHOT \-DgroupId=za.co.thumbtribe.djug \-DartifactId=HelloWorld

• Select the number for the line matching (in this case 110):

110: remote -> maven-archetype-quickstart (An archetype which contains a sample Maven project.)

110: remote -> maven-archetype-quickstart (An archetype which contains a sample Maven project.)

• This will be the root of the project, containing the web, service and assemble sub-modules (multi-module project)

• You now have the chance to add project-specific documentation and parameters to the pom.xml which you can later on, share with you developers. The convenience is that you don't need to keep track of every aspect of the project in external documentation, as everything needed is already available.

Page 7: Maven: from Scratch to Production (.pdf)

Configuring the Documentation

• Development• Source Code Management• Collaboration Management• Notification Management• Continuous Integration• Distribution Management

• Other Information• Developers• Contributors• Reporting• Licenses• Organisation

Page 8: Maven: from Scratch to Production (.pdf)

Setting up Continuous Integration

• Download Apache Continuum • http://continuum.apache.org/download.html

• Standalone bundled with Apache Tomcat• WAR for deployment on an Application Server

• Unzip to destination

• Start up Continuum

• Set up project in Continuum• make the root pom.xml available via web

• file protocol supported, but needs configuration

tar zxvf apache-continuum-1.3.7-bin.tar.gztar zxvf apache-continuum-1.3.7-bin.tar.gz

./continuum start./continuum start

Page 9: Maven: from Scratch to Production (.pdf)

Some Continuum Features

• Tool support:• Maven 1, 2 and 3• ANT• Shell Scripts

• Build Types:• Manual• Scheduled• Push with xmlrpc

• Distributed Builds

• Parallel Builds

Page 10: Maven: from Scratch to Production (.pdf)

Seeing Continuum in Action

• Release Stages• Prepare for Release• Do the Release

• Build Result• Artifacts deployed to the repository

• If it's public, users will have access to the POMs and the resources the POM files describe.

• Site with:• Generated Test Results and Project JavaDoc,• Project information,• Dependency Information and many more...

• Resources deployed to staging and/or production environment • (dependend on setup)

Page 11: Maven: from Scratch to Production (.pdf)

• Apache• Maven: | http://maven.apache.org/• Continuum: | http://continuum.apache.org/

• Glassfish• Application Server | http://glassfish.java.net/

• Prime Teknoloji• PrimeFaces: | http://www.primefaces.org/

References

Page 12: Maven: from Scratch to Production (.pdf)

End

Thank you for attending!

Page 13: Maven: from Scratch to Production (.pdf)

• Junior Java Developer @ Thumbtribe Mobile Solutions• Passionate about Linux, Java and technology in general• Description in less than 3 lines:

• technology++ cats++ coffee++ java++ linux++ intellij++• eclipse-- dogs-- tea-- M$--

Follow on Twitter:• @johanmynhardt

About the author

Page 14: Maven: from Scratch to Production (.pdf)

05/13/11

by: Johan Mynhardt |Durban JUG Meeting |

12 May 2011|

MavenFrom Scratch to Production

Welcome note

Introduce yourself

Why maven as a topic?

Page 15: Maven: from Scratch to Production (.pdf)

05/13/11

• Ripe ground for flame-war

• Argumenting that:• X is better than Y.• Y is better than X.• I can do this with X by making use of Z.

• A session to convince you

What this is *not*

Avoid conflict and flame-wars :P

Page 16: Maven: from Scratch to Production (.pdf)

05/13/11

• Set up a Maven project

• Set up the CI environment with Apache Continuum

• See everything in action!

Objectives

Quick overview of the entire presentation's objective

Page 17: Maven: from Scratch to Production (.pdf)

05/13/11

• Java EE 6 • Glassfish Application Server• EJB 3.1• JSF 2.0

• PrimeFaces

• Continuous Integration and Project Management (from development perspective)• Apache Continuum• Apache Maven

Project Technologies

Quick word on technologies used in the skeleton project

which took some time to set up

Page 18: Maven: from Scratch to Production (.pdf)

05/13/11

• Making the build process easy

• Providing a uniform build system

• Providing quality project information

• Providing guidelines for best practices development

Maven's Objectives

http://maven.apache.org/what-is-maven.html

Page 19: Maven: from Scratch to Production (.pdf)

05/13/11

Setting up the Project: HelloWorld

• Create the project root by running the following:

~/$ cd workspace~/workspace$ mvn archetype:generate \-Dversion=1.0-SNAPSHOT \-DgroupId=za.co.thumbtribe.djug \-DartifactId=HelloWorld

~/$ cd workspace~/workspace$ mvn archetype:generate \-Dversion=1.0-SNAPSHOT \-DgroupId=za.co.thumbtribe.djug \-DartifactId=HelloWorld

• Select the number for the line matching (in this case 110):

110: remote -> maven-archetype-quickstart (An archetype which contains a sample Maven project.)110: remote -> maven-archetype-quickstart (An archetype which contains a sample Maven project.)

• This will be the root of the project, containing the web, service and assemble sub-modules (multi-module project)

• You now have the chance to add project-specific documentation and parameters to the pom.xml which you can later on, share with you developers. The convenience is that you don't need to keep track of every aspect of the project in external documentation, as everything needed is already available.

The first steps in creating a maven project.

Creating the child Modules are excluded.

Child modules can be created using different project templates, war, ejb, ear, portlet etc.

Steps excluded from setup:

version control (subversion)

ssh keys

web config for project documentation

Page 20: Maven: from Scratch to Production (.pdf)

05/13/11

Configuring the Documentation

• Development• Source Code Management• Collaboration Management• Notification Management• Continuous Integration• Distribution Management

• Other Information• Developers• Contributors• Reporting• Licenses• Organisation

Just covering the most parts needed for enabling the project to a production environment

Page 21: Maven: from Scratch to Production (.pdf)

05/13/11

Setting up Continuous Integration

• Download Apache Continuum • http://continuum.apache.org/download.html

• Standalone bundled with Apache Tomcat• WAR for deployment on an Application Server

• Unzip to destination

• Start up Continuum

• Set up project in Continuum• make the root pom.xml available via web

• file protocol supported, but needs configuration

tar zxvf apache-continuum-1.3.7-bin.tar.gztar zxvf apache-continuum-1.3.7-bin.tar.gz

./continuum start./continuum start

The standalone option is the easiest

Setup in Glassfish requires JNDI resources being set up

mail

database

logging config (working though)

Depending on the project the default build flow is sufficient (for using the root POM and produce artifacts)

Page 22: Maven: from Scratch to Production (.pdf)

05/13/11

Some Continuum Features

• Tool support:• Maven 1, 2 and 3• ANT• Shell Scripts

• Build Types:• Manual• Scheduled• Push with xmlrpc

• Distributed Builds

• Parallel Builds

SCM support :

CVS,

Subversion,

Clearcase,

Perforce,

Starteam,

Visual Source Safe,

CM Synergy,

Bazaar,

Mercurial

Page 23: Maven: from Scratch to Production (.pdf)

05/13/11

Seeing Continuum in Action

• Release Stages• Prepare for Release• Do the Release

• Build Result• Artifacts deployed to the repository

• If it's public, users will have access to the POMs and the resources the POM files describe.

• Site with:• Generated Test Results and Project JavaDoc,• Project information,• Dependency Information and many more...

• Resources deployed to staging and/or production environment • (dependend on setup)

Release preparation sees to it that most of the build issues are sorted out before a release. (issues not discovered in a normal build)

Once preparation succeeds the build is ready for release.

After the release build all the documentation and relevant information will be available in a web format which can be published, using the site plugin.

The site plugin enhances the developer experience in that for example, a new developer joins the team, he/she can be pointed to the project site which has all the required documentation.

Page 24: Maven: from Scratch to Production (.pdf)

05/13/11

• Apache• Maven: | http://maven.apache.org/• Continuum: | http://continuum.apache.org/

• Glassfish• Application Server | http://glassfish.java.net/

• Prime Teknoloji• PrimeFaces: | http://www.primefaces.org/

References

Page 25: Maven: from Scratch to Production (.pdf)

05/13/11

End

Thank you for attending!

Page 26: Maven: from Scratch to Production (.pdf)

05/13/11

• Junior Java Developer @ Thumbtribe Mobile Solutions• Passionate about Linux, Java and technology in general• Description in less than 3 lines:

• technology++ cats++ coffee++ java++ linux++ intellij++• eclipse-- dogs-- tea-- M$--

Follow on Twitter:• @johanmynhardt

About the author