Maven the Beautiful City. Healthy, Viable, and Productive Build Infrastructures



Similar documents
Maven or how to automate java builds, tests and version management with open source tools

Meister Going Beyond Maven

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Build management & Continuous integration. with Maven & Hudson

Automated performance testing using Maven & JMeter. George Barnett, Atlassian Software

Jenkins: The Definitive Guide

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

Nexus Professional Whitepaper. Repository Management: Stages of Adoption

SA4 Software Developer Survey Survey Specification v2.2

Software Construction

Introduction to Programming Tools. Anjana & Shankar September,2010

SOFTWARE DEVELOPMENT BASICS SED

Continuous Integration

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Kevin Lee Technical Consultant As part of a normal software build and release process

TeamCity A Professional Solution for Delivering Quality Software, on Time

IKAN ALM Architecture. Closing the Gap Enterprise-wide Application Lifecycle Management

Case Study: Using Jenkins to Build WebSphere Portal Applications for the Enterprise. #jenkinsconf. Jenkins User Conference Boston #jenkinsconf

ALERT installation setup

Software Continuous Integration & Delivery

Delivering Quality Software with Continuous Integration

GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns

White Paper. Software Development Best Practices: Enterprise Code Portal

SOA-14: Continuous Integration in SOA Projects Andreas Gies

Content. Development Tools 2(63)

<Insert Picture Here> Introducing Hudson. Winston Prakash. Click to edit Master subtitle style

Java Power Tools. John Ferguson Smart. ULB Darmstadt 1 PI. O'REILLY 4 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo

Java Software Quality Tools and techniques

Software project management. and. Maven

Continuous Integration: Put it at the heart of your development

Automate Your Deployment with Bamboo, Drush and Features DrupalCamp Scotland, 9 th 10 th May 2014

Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8

Open Source vs. Collaborative Software: FOSS is Not Enough

Continuous Integration. CSC 440: Software Engineering Slide #1

Agile ALM. Lightweight tools and Agile strategies MANNING MICHAEL HUTTERMANN. Shelter Island

Developing Applications Using Continuous Integration 12c (12.2.1)

"Build and Test in the Cloud "

Continuous Integration: A case study

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Global Software Change Management for PVCS Version Manager

LECTURES NOTES Organisational Aspects of Software Development

SAS in clinical trials A relook at project management,

Software infrastructure for Java development projects

Hudson configuration manual

How To Use An Orgsync With Anorgfusion Middleware

Zero-Touch Drupal Deployment

Software Configuration Management and Continuous Integration

Continuous Integration using Docker & Jenkins

Building, testing and deploying mobile apps with Jenkins & friends

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

An Introduction to Software Development Process and Collaborative Work

Leveraging Rational Team Concert's build capabilities for Continuous Integration

Continuous Delivery. Alejandro Ruiz

Application Lifecycle Management White Paper. Source Code Management Best Practice: Applying Economic Logic to Migration ALM

Structured Content: the Key to Agile. Web Experience Management. Introduction

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

Software project management. and. Maven

Communiqué 4. Standardized Global Content Management. Designed for World s Leading Enterprises. Industry Leading Products & Platform

SOA Myth or Reality??

GLOBAL CONSULTING SERVICES TOOLS FOR WEBMETHODS Software AG. All rights reserved. For internal use only

SOA Solutions & Middleware Testing: White Paper

Software Development In the Cloud Cloud management and ALM

Source Control Systems

Hudson Continous Integration Server. Stefan Saasen,

Agile Business Suite: a 4GL environment for.net developers DEVELOPMENT, MAINTENANCE AND DEPLOYMENT OF LARGE, COMPLEX BACK-OFFICE APPLICATIONS

SOA REFERENCE ARCHITECTURE: WEB TIER

The Essentials of File Management with LabVIEW

Finally, an agile test strategy (that works)! AS OW Test Model, Objectware

Agile Development with Jazz and Rational Team Concert

IBM Rational ClearCase, Version 8.0

Integrating your Maven Build and Tomcat Deployment

Maven: The Complete Reference

CONTINUOUS INTEGRATION. Introduction

Project Title: Judicial Branch Enterprise Document Management System RFP Number: FIN122210CK Appendix D Technical Features List

Change & Configuration! Management

NXTware Remote. Advanced Development and Maintenance Environment for OpenVMS and other Strategic Platforms

Version Control Your Jenkins Jobs with Jenkins Job Builder

Continuous Integration Multi-Stage Builds for Quality Assurance

Pro Puppet. Jeffrey McCune. James TurnbuII. Apress* m in

Electronic Forms Processing (eforms)

Jitterbit Technical Overview : Microsoft Dynamics CRM

Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)

Software configuration management

WHITE PAPER. Getting started with Continuous Integration in software development. - Amruta Kumbhar, Madhavi Shailaja & Ravi Shankar Anupindi

Mastering Continuous Integration with Jenkins

Intellicyber s Enterprise Integration and Application Tools

Software Engineering Best Practices. Christian Hartshorne Field Engineer Daniel Thomas Internal Sales Engineer

Web Developer Toolkit for IBM Digital Experience

Software Configuration Management. Slides derived from Dr. Sara Stoecklin s notes and various web sources.

The Benefits of Utilizing a Repository Manager

Efficient Automated Build and Deployment Framework with Parallel Process

Transcription:

Maven the Beautiful City Healthy, Viable, and Productive Build Infrastructures

What is Maven? Build tool Similar to Ant but fundamentally different which we will discuss later Dependency management tool Similar to Ivy, but not bolted on as an afterthought Site management tool

What Maven really is... Model for software projects Patterns for software development and development infrastructures Ultimately the basis for a new form of team collaboration

Development Infrastructures Development Infrastructures must provide facilities for: Building Testing Documenting Continuous Integration Releasing Artifact/Asset Management Provisioning

A consistent model and patterns makes... Automation easier Continuum Tooling easier Dependency metadata Plugin metadata Standard lifecycle Real dependency analysis possible

Why can t I just use Ant? You certain can, but Ant provides no inherent order, structure or process

Maven Sucks! http://bluxte.net/blog/2006-09/17-52-51.html http://www.bearaway.org/wp/?p=518 http://www.1060.org/blogxter/publish/5 The Bile Blog I hate XML! I want to use a real scripting language! Maven is restrictive! I can t do exactly what I want!

Infrastructure, Portland, Oregon and Maven Intentional infrastructure You have to invest in your infrastructure to yield returns It must be carefully planned, infrastructures don t just happen Long-term sustainability The key is keeping people involved sustainability by virtue versus sustainability by force Healthy growth in mind Some constraints are necessary Promotion of community Create opportunities for people to interact

Questions about infrastructure Do you think your infrastructure is wildly different then anyone else s? Is your infrastructure a competitive advantage? Would you like help with the most difficult infrastructure problems you might face?

Inherent utility The infrastructure should provide a lot to make complicated tasks easier When complicated tasks are made easy, there is more time for the bigger picture What's in the bigger picture?

Maven & Social Capital Term coined by Jane Jacobs (The Death and Life of Great American Cities) People s ability to work together in groups Creation of real communities using the idea of patterns and conscious planning Concrete example of the Maven community working to improve project metadata

Maven's Objectives Standards and Best Practices for build infrastructures We use standard APIs and best practices when developing applications: Maven pushes this practice down to the level of infrastructure Provide a shared language for build infrastructure management Patterns for build infrastructures in the spirit of A Pattern Language by Christopher Alexander Create healthy and robust build infrastructures that hold up to high degrees of flux

Maven's Principles Model driven development Convention over configuration Reuse and encapsulation of build logic Coherent organization of dependencies

Model driven development Maven's project object model (POM) Maven's build life cycle

Developers Dependencies Plugins Organizational Information POM Reporting Issue Management Mailing Lists Distribution Management Continuous Integration Source Control Management

Simple Project Object Model <project> <modelversion>4.0.0</modelversion> <groupid>com.iona.superapp</groupid> <artifactid>superapp</artifactid> <version>1.0-snapshot</version> <name>maven Quick Start Archetype</name> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>

Super POM POM POM POM POM POM

Validate Generate Sources Generate Resources Compile Test Package Install Deploy

Convention over configuration Standard directory layout One primary artifact per build Standard naming conventions

Encapsulation and reuse of build logic All build logic is encapsulated in plugins Maven is a plugin execution framework Plugins can be applied to all Maven projects

Coherent organization of dependencies Say what you need, not where or how to get it Dependencies in Maven are requested in a declarative fashion Artifacts and Repositories Remote repositories for the satisfaction of dependencies Local repository is the developers personal analog to a set of remote repositories

Maven checks the local repository for the required dependencies Local Repository 2 Maven 3 Remote Repository 1 Maven retrieves the necessary dependencies from the remote repository Maven gathers dependency information from the POM POM

What Maven Provides Coherence - An orderly, logical, and aesthetically consistent relation of parts Reusability - Reuse not only of software components but the best practices of an entire industry Agility - Maven allows easier integration and project straddling Maintainability - Maven projects are more maintainable as there are far fewer surprises

Benefits of Maven Relieves the burden of project and build maintenance Easy for new users to embrace Best Practices Focus on adding value to your applications Draw upon the community for solutions

Apache Maven Projects Maven Archetype Archiva Continuum Doxia SCM Surefire Wagon Issue Management Wiki Management

Archetypes A very easy way to get a project up and running A way to encapsulate your priorities for projects in template form Are distributed and sharable like any other Maven artifact

Archiva Indexer/Searching User Discoverer Web Interface M2 Plugins Archiva Reporter Web Service IDEs Converter Apps Proxy

Continuum Continuum Builders Build Triggers Notifiers Maven Alarm IRC Ant SOAP IM Shell XmlRpc Mail

Distributed Continuum Build Node Build Node Build Node Continuum Master Build Node Build Node Build Request Build Response Build Node

Maven Doxia Parsers APT (almost plain text) FML (FAQ markup) XDoc (Maven 1.x XML format) Docbook XHTML Twiki Confluence Sinks Docbook Latex RTF XDoc XHTML PDF

Maven SCM CVS Subversion ClearCase Perforce Starteam Visual Source Safe Bazaar Git (in progress) Synergy (in progress)

Maven Surefire JUnit TestNG JUnit4 Scripted testing Jython JRuby Use any source of information for tests Text file XML file

Maven Wagon HTTP/S SSH SFTP DAV FTP File

Feynman Feynman SCM View FishEye Wiki Confluence Issue Managment JIRA IRC Server Plexus Email QMail Forum Management Jive Jabber Server Plexus Email Lists Subetha Blog Management Pebble User Management ApacheDS (LDAP) SCM Subversion Repository Management Maven Repository Manager Project Creator Project from POM Quality Dashboard Team Project Server

Questions? Do have any questions about Maven?