Faven Software
English language
 
Język polski

Basic Maven

Overview

This class will introduce the student to the Apache Maven software used to build a variety of Java Applications. Build File Syntax will be discussed from handling simple builds to deploying WebServer applications.

Audience

This course is designed for individuals who are programmers, designers, and webmasters who wish to build Java applications using Apache Maven.

Prerequisites

Students should have a basic understanding of Java Programming and XML.

Course Format

This is a hands-on course. We apply a powerful learning cycle of short lecture, examples and labs on each topic. Each student gets lab code and the entire course content printed out (organized in a ring binder).

Course Duration

Three days (21 hours), 9:00 AM-5:00 PM (1h lunch break); typically ends by 4:00 PM on the last day.

Course Details

  1. An introduction to Maven
    • Key Features of Maven
    • History of Maven
    • Alternatives to Maven
    • Comparing Maven and Ant
    • Environment Configuration
    • Maven Installation
  2. Installing Maven
    • Downloading Maven
    • Installing Maven
    • Maven Directory
    • Maven Settings (Local and Global)
    • Local Maven Repository
    • Running Maven
    • Maven Options
    • Upgrading Maven
  3. Core Concepts
    • Maven Directory Structure
    • Standard Maven Lifecycle
    • Maven Plugins and Goals
    • Maven Coordinates
    • Dependency Management
    • Maven Repositories
    • Maven Archetypes
    • First Maven Project
    • m2eclipse Installation
    • First m2eclipse Project
  4. Project and Dependencies
    • The Project Object Model (POM)
      • The Simplest POM
      • POM Components
    • Project Coordinates
      • GAV (Group, Artifact, Version)
      • Project Versions
      • Snapshot Versions
    • Dependencies
      • Dependency Scope
      • Optional Dependencies
      • Version Ranges
      • Transitive Dependencies
      • Visualizing Dependencies
      • Dependency Conflicts
      • Excluding Transitive Dependencies
    • POM Inheritance and Aggregation
      • POM Inheritance
      • The Super POM
      • Inherited Behavior
      • The Effective POM
    • Multi-module Projects
      • Directory Structure
      • Container Projects
      • POM Aggregation
      • Example Multi-module
    • Modifying a POM
    • Working with Dependencies
    • Creating a Multi-module Project
  5. Custom Builds
    • Customizing the Lifecycle
      • Lifecycle Overview
      • Default Lifecycle
      • Site Lifecycle
      • Package-specific Lifecycle
    • Key Lifecycle Phases
    • Properties and Profiles
      • Variables
      • POM Variables
      • settings.xml properties
      • Java System properties
      • Environment variables
      • User-defined properties
    • Filtering Resources
      • Build Profiles
      • Project Configuration with Profiles
      • Project Activation
      • Maven Repositories
      • Repository Structure
      • Central Repository
      • Other Remote Repositories
      • Local Repository
    • Site Generation and Reporting
    • Demonstration
    • Properties and Filters
    • Working with Build Profiles
  6. Consistent Builds
    • Standardized Environment
    • Explicit Use of Plugin Versions
    • The Enforcer Plugin
  7. Site Generation with Maven
    • Maven Site as Collaboration Tool
    • The Site Lifecycle
    • Default Site Layout
    • Creating a Site Project
    • Organizing Your Site
    • Adding Site Content
      • APT Format
      • FML Format
      • XML Format
      • Changing the Site Look and Feel
      • Deploying a Site
  8. Site Reporting with Maven
    • Technical Documentation
    • Browsable Source Code
    • Displaying Test Results
    • Code Quality Metrics
    • Adding Reports to Your Site
  9. Web Development
    • Using the Maven Jetty Plugin
    • Developing Web Applications with Maven
    • Running Your Webapp in Jetty
  10. Repository Management
    • What is Enterprise Repository?
    • Installing Nexus
    • Using Nexus
    • Nexus Repositories and Security
    • Deploying to Nexus with Maven
    • Managing Maven Settings with Nexus
    • Enterprise Security (LDAP)
    • Configuring Procurement in Nexus
    • Performing a Staged Release
  11. Release Management
    • Release Management
    • The Maven Release Plugin
    • Developer Release Workflow
    • Integration with Source Control
    • Example Using Subversion
    • Example Using Git
    • Using Nexus
  12. Continuous Integration with Hudson
    • What is Continuous Integration?
    • Benefits of Continuous Integration
    • Downloading Hudson
    • Running Hudson
    • Configuring Hudson for Maven
    • Setting Up a Maven Job in Hudson
    • Monitoring Hudson Builds
    • Demonstration of Hudson
    • Using Hudson