Synopses & Reviews
For too long, developers have worked on disorganized application projects, where every part seemed to have its own build system, and no common repository existed for information about the state of the project. Now there's help. The long-awaited official documentation to Maven is here.
Written by Maven creator Jason Van Zyl and his team at Sonatype, Maven: The Definitive Guide clearly explains how this tool can bring order to your software development projects. Maven is largely replacing Ant as the build tool of choice for large open source Java projects because, unlike Ant, Maven is also a project management tool that can run reports, generate a project website, and facilitate communication among members of a working team.
To use Maven, everything you need to know is in this guide. The first part demonstrates the tool's capabilities through the development, from ideation to deployment, of several sample applications -- a simple software development project, a simple web application, a multi-module project, and a multi-module enterprise project.
The second part offers a complete reference guide that includes:
- The POM and Project Relationships
- The Build Lifecycle
- Project website generation
- Advanced site generation
- Build Profiles
- The Maven Repository
- Team Collaboration
- Writing Plugins
- IDEs such as Eclipse, IntelliJ, ands NetBeans
- Using and creating assemblies
- Developing with Maven Archetypes
Several sources for Maven have appeared online for some time, but nothing served as an introduction and comprehensive reference guide to this tool -- until now. Maven: The Definitive Guide is the ideal book to help you manage development projects for software, web applications, and enterprise applications. And it comes straight from the source.
Written by Maven creator Jason Van Zyl and his team at Sonatype, this handbook clearly explains how this tool can bring order to software development projects.
About the Author
Sonatype Company is Jason Van Zyl's company and pretty much the center of the Maven universe. Jason Van Zyl is the inventor and lead developer of Maven.
Table of Contents
Preface; Maven... What Is It?; Font Conventions; Maven Writing Conventions; Using Code Examples; Safari® Books Online; How to Contact Us; Acknowledgments; Introduction; Chapter 1: Introducing Apache Maven; 1.1 Convention over Configuration; 1.2 A Common Interface; 1.3 Universal Reuse Through Maven Plugins; 1.4 Conceptual Model of a "Project"; 1.5 Is Maven an Alternative to XYZ?; 1.6 Comparing Maven and Ant; 1.7 Summary; Chapter 2: Installing and Running Maven; 2.1 Verify Your Java Installation; 2.2 Downloading Maven; 2.3 Installing Maven; 2.4 Testing a Maven Installation; 2.5 Maven Installation Details; 2.6 Getting Help with Maven; 2.7 Using the Maven Help Plugin; 2.8 About the Apache Software License; Maven by Example; Chapter 3: A Simple Maven Project; 3.1 Introduction; 3.2 Creating a Simple Project; 3.3 Building a Simple Project; 3.4 Simple Project Object Model; 3.5 Core Concepts; 3.6 Summary; Chapter 4: Customizing a Maven Project; 4.1 Introduction; 4.2 Defining the Simple Weather Project; 4.3 Creating the Simple Weather Project; 4.4 Customize Project Information; 4.5 Add New Dependencies; 4.6 Simple Weather Source Code; 4.7 Add Resources; 4.8 Running the Simple Weather Program; 4.9 Writing Unit Tests; 4.10 Adding Test-Scoped Dependencies; 4.11 Adding Unit Test Resources; 4.12 Executing Unit Tests; 4.13 Building a Packaged Command-Line Application; Chapter 5: A Simple Web Application; 5.1 Introduction; 5.2 Defining the Simple Web Application; 5.3 Creating the Simple Web Project; 5.4 Configuring the Jetty Plugin; 5.5 Adding a Simple Servlet; 5.6 Adding J2EE Dependencies; 5.7 Conclusion; Chapter 6: A Multimodule Project; 6.1 Introduction; 6.2 The Simple Parent Project; 6.3 The Simple Weather Module; 6.4 The Simple Web Application Module; 6.5 Building the Multimodule Project; 6.6 Running the Web Application; Chapter 7: Multimodule Enterprise Project; 7.1 Introduction; 7.2 The Simple Parent Project; 7.3 The Simple Model Module; 7.4 The Simple Weather Module; 7.5 The Simple Persist Module; 7.6 The Simple Web Application Module; 7.7 Running the Web Application; 7.8 The simple-command Module; 7.9 Running simple-command; 7.10 Conclusion; Maven Reference; Chapter 8: Optimizing and Refactoring POMs; 8.1 Introduction; 8.2 POM Cleanup; 8.3 Optimizing Dependencies; 8.4 Optimizing Plugins; 8.5 Optimizing with the Maven Dependency Plugin; 8.6 Final POMs; 8.7 Conclusion; Chapter 9: The Project Object Model; 9.1 Introduction; 9.2 The POM; 9.3 POM Syntax; 9.4 Project Dependencies; 9.5 Project Relationships; 9.6 POM Best Practices; Chapter 10: The Build Lifecycle; 10.1 Introduction; 10.2 Package-Specific Lifecycles; 10.3 Common Lifecycle Goals; Chapter 11: Build Profiles; 11.1 What Are They For?; 11.2 Portability Through Maven Profiles; 11.3 Profile Activation; 11.4 External Profiles; 11.5 Settings Profiles; 11.6 Listing Active Profiles; 11.7 Tips and Tricks; 11.8 Summary; Chapter 12: Maven Assemblies; 12.1 Introduction; 12.2 Assembly Basics; 12.3 Overview of the Assembly Descriptor; 12.4 The Assembly Descriptor; 12.5 Controlling the Contents of an Assembly; 12.6 Best Practices; 12.7 Summary; Chapter 13: Properties and Resource Filtering; 13.1 Introduction; 13.2 Maven Properties; 13.3 Resource Filtering; Chapter 14: Maven and Eclipse: m2eclipse; Introduction; m2eclipse; Installing the m2eclipse Plugin; Installing Prerequisites; Installing Subclipse; Installing Mylyn; Installing AspectJ Development Tools (AJDT); Installing the Web Tools Platform (WTP); Installing m2eclipse; Enabling the Maven Console; Creating a Maven Project; Checking Out a Maven Project from SCM; Creating a Maven Project from a Maven Archetype; Creating a Maven Module; Create a Maven POM File; Importing Maven Projects; Importing a Maven Project; Materializing a Maven Project; Running Maven Builds; Working with Maven Projects; Adding and Updating Dependencies and Plugins; Creating a Maven Module; Downloading Source; Opening Project Pages; Resolving Dependencies; Working with Maven Repositories; Searching For Maven Artifacts and Java classes; Indexing Maven Repositories; Using the Form-Based POM Editor; Analyzing Project Dependencies in m2eclipse; Maven Preferences; Summary; Chapter 15: Site Generation; 15.1 Introduction; 15.2 Building a Project Site with Maven; 15.3 Customizing the Site Descriptor; 15.4 Site Directory Structure; 15.5 Writing Project Documentation; 15.6 Deploying Your Project Web Site; 15.7 Customizing Site Appearance; 15.8 Tips and Tricks; Chapter 16: Repository Manager; Introduction; History of Nexus; Installing Nexus; Downloading Nexus from Sonatype; Installing Nexus; Running Nexus; Post-Install Checklist; Startup Scripts for Linux; Add Nexus as a service on Red Hat, Fedora, and CentOS; Add Nexus as a service on Ubuntu; Running Nexus Behind a Proxy; Using Nexus; Browsing Repositories; Browsing Groups; Searching for Artifacts; Browsing System Feeds; Browsing Log Files and Configuration; Changing Your Password; Configuring Maven to Use Nexus Repositories; Using the Nexus Central Proxy Repository; Using Nexus for Snapshot Repositories; Adding Custom Repositories for Missing Dependencies; Adding a New Repository; Adding a Repository to a Group; Configuring Nexus; Customizing Server Configuration; Managing Repositories; Managing Groups; Managing Routes; Managing Scheduled Services; Managing Security; Managing privileges; Managing repository targets; Managing security roles; Managing users; Network Configuration; Maintaining Repositories; Uploading Artifacts to Hosted Repositories; Deploying Artifacts to Nexus; Configuring Deployment Security; Deploying Releases; Deploying Snapshots; Deploying Third-Party Artifacts; Chapter 17: Writing Plugins; 17.1 Introduction; 17.2 Programming Maven; 17.3 Plugin Descriptor; 17.4 Writing a Custom Plugin; 17.5 Mojo Parameters; 17.6 Plugins and the Maven Lifecycle; Chapter 18: Writing Plugins in Alternative Languages; 18.1 Writing Plugins in Ant; 18.2 Creating an Ant Plugin; 18.3 Writing Plugins in JRuby; 18.4 Writing Plugins in Groovy; Appendixes; Settings Details; Quick Overview; Settings Details; Sun Specification Alternatives; Colophon;