Maven: The Definitive Guide

Authors

Tim O'Brien (Sonatype, Inc.) , John Casey (Sonatype, Inc.) , Brian Fox (Sonatype, Inc.) , Bruce Snyder () , Jason Van Zyl (Sonatype, Inc.)

Abstract

Maven: The Definitive Guide is a book about Apache Maven.


Copyright
1. Creative Commons BY-ND-NC
Foreword: Alpha 0.12
Preface
1. How to Use this Book
2. Your Feedback
3. Font Conventions
4. Maven Writing Conventions
5. Acknowledgements
1. Introducing Apache Maven
1.1. Maven... What is it?
1.2. Convention Over Configuration
1.3. A Common Interface
1.4. Universal Reuse through Maven Plugins
1.5. Conceptual Model of a "Project"
1.6. Is Maven an alternative to XYZ?
1.7. Comparing Maven with Ant
1.8. Summary
2. Installing and Running Maven
2.1. Verify your Java Installation
2.2. Downloading Maven
2.3. Installing Maven
2.3.1. Installing Maven on Mac OSX
2.3.2. Installing Maven on Microsoft Windows
2.3.3. Installing Maven on Linux
2.3.4. Installing Maven on FreeBSD or OpenBSD
2.4. Testing a Maven Installation
2.5. Maven Installation Details
2.5.1. User-specific Configuration and Repository
2.5.2. Upgrading a Maven Installation
2.6. Getting Help with Maven
2.7. Using the Maven Help Plugin
2.7.1. Describing a Maven Plugin
2.8. About the Apache Software License
I. Maven by Example
3. A Simple Maven Project
3.1. Introduction
3.1.1. Downloading this Chapter's Example
3.2. Creating a Simple Project
3.3. Building a Simple Project
3.4. Simple Project Object Model
3.5. Core Concepts
3.5.1. Maven Plugins and Goals
3.5.2. Maven Lifecycle
3.5.3. Maven Coordinates
3.5.4. Maven Repositories
3.5.5. Maven's Dependency Management
3.5.6. Site Generation and Reporting
3.6. Summary
4. Customizing a Maven Project
4.1. Introduction
4.1.1. Downloading this Chapter's Example
4.2. Defining the Simple Weather Project
4.2.1. Yahoo! Weather RSS
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.8.1. The Maven Exec Plugin
4.8.2. Exploring Your Project Dependencies
4.9. Writing Unit Tests
4.10. Adding Test-scoped Dependencies
4.11. Adding Unit Test Resources
4.12. Executing Unit Tests
4.12.1. Ignoring Test Failures
4.12.2. Skipping Unit Tests
4.13. Building a Packaged Command Line Application
5. A Simple Web Application
5.1. Introduction
5.1.1. Downloading this Chapter's Example
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
6. A Multi-module Project
6.1. Introduction
6.1.1. Downloading this Chapter's Example
6.2. The Simple Parent Project
6.3. The Simple Weather Module
6.4. The Simple Web Application Module
6.5. Building the Multi-module Project
6.6. Running the Web Application
7. Multi-module Enterprise Project
7.1. Introduction
7.1.1. Downloading this Chapter's Example
7.1.2. Multi-module Enterprise Project
7.1.3. Technology Used in this Example
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 the Simple Command
7.10. Conclusion
7.10.1. Programming to Interface Projects
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
II. Maven Reference
9. The Project Object Model
9.1. Introduction
9.2. The POM
9.2.1. The Super POM
9.2.2. The Simplest POM
9.2.3. The Effective POM
9.2.4. Real POMs
9.3. POM Syntax
9.3.1. Project Versions
9.3.1.1. Version Build Numbers
9.3.1.2. SNAPSHOT Versions
9.3.2. Property References
9.4. Project Dependencies
9.4.1. Dependency Scope
9.4.2. Optional Dependencies
9.4.3. Dependency Version Ranges
9.4.4. Transitive Dependencies
9.4.4.1. Transitive Dependencies and Scope
9.4.5. Conflict Resolution
9.4.6. Dependency Management
9.5. Project Relationships
9.5.1. More on Coordinates
9.5.2. Multi-module Projects
9.5.3. Project Inheritance
9.6. POM Best Practices
9.6.1. Grouping Dependencies
9.6.2. Multi-module vs. Inheritance
9.6.2.1. Simple Project
9.6.2.2. Multi-module Enterprise Project
9.6.2.3. Prototype Parent Projects
10. The Build Lifecycle
10.1. Introduction
10.1.1. Clean Lifecycle (clean)
10.1.2. Default Lifecycle (default)
10.1.3. Site Lifecycle (site)
10.2. Package-specific Lifecycles
10.2.1. JAR
10.2.2. POM
10.2.3. Maven Plugin
10.2.4. EJB
10.2.5. WAR
10.2.6. EAR
10.2.7. Other Packaging Types
10.3. Common Lifecycle Goals
10.3.1. Process Resources
10.3.2. Compile
10.3.3. Process Test Resources
10.3.4. Test Compile
10.3.5. Test
10.3.6. Install
10.3.7. Deploy
11. Build Profiles
11.1. What Are They For?
11.1.1. What is Build Portability
11.1.1.1. Non-Portable Builds
11.1.1.2. Environment Portability
11.1.1.3. Organizational (In-House) Portability
11.1.1.4. Wide (Universal) Portability
11.1.2. Selecting an Appropriate Level of Portability
11.2. Portability through Maven Profiles
11.2.1. Overriding a Project Object Model
11.3. Profile Activation
11.3.1. Activation Configuration
11.3.2. Activation by the Absence of a Property
11.4. External Profiles
11.5. Settings Profiles
11.5.1. Global Settings Profiles
11.6. Listing Active Profiles
11.7. Tips and Tricks
11.7.1. Common Environments
11.7.2. Protecting Secrets
11.7.3. Platform Classifiers
11.8. Summary
12. Maven Assemblies
12.1. Introduction
12.2. Assembly Basics
12.2.1. Predefined Assembly Descriptors
12.2.2. Building an Assembly
12.2.3. Assemblies as Dependencies
12.2.4. Assembling Assemblies via Assembly Dependencies
12.3. Overview of the Assembly Descriptor
12.4. The Assembly Descriptor
12.4.1. Property References in Assembly Descriptors
12.4.2. Required Assembly Information
12.5. Controlling the Contents of an Assembly
12.5.1. Files Section
12.5.2. FileSets Section
12.5.3. Default Exclusion Patterns for fileSets
12.5.4. dependencySets Section
12.5.4.1. Customizing Dependency Output Location
12.5.4.2. Interpolation of Properties in Dependency Output Location
12.5.4.3. Including and Excluding Dependencies by Scope
12.5.4.4. Fine Tuning: Dependency Includes and Excludes
12.5.4.5. Transitive Dependencies, Project Attachments, and Project Artifacts
12.5.4.6. Advanced Unpacking Options
12.5.4.7. Summarizing Dependency Sets
12.5.5. moduleSets Sections
12.5.5.1. Module Selection
12.5.5.2. Sources Section
12.5.5.3. Interpolation of outputDirectoryMapping in moduleSets
12.5.5.4. Binaries section
12.5.5.5. moduleSets, Parent POMs and the binaries Section
12.5.6. Repositories Section
12.5.7. Managing the Assembly’s Root Directory
12.5.8. componentDescriptors and containerDescriptorHandlers
12.6. Best Practices
12.6.1. Standard, Reusable Assembly Descriptors
12.6.2. Distribution (Aggregating) Assemblies
12.7. Summary
13. Properties and Resource Filtering
13.1. Introduction
13.2. Maven Properties
13.2.1. Maven Project Properties
13.2.2. Maven Settings Properties
13.2.3. Environment Variable Properties
13.2.4. Java System Properties
13.2.5. User-defined Properties
13.3. Resource Filtering
14. Maven and Eclipse: m2eclipse
14.1. Introduction
14.2. m2eclipse
14.3. Installing the m2eclipse Plugin
14.3.1. Installing Prerequisites
14.3.1.1. Installing Subclipse
14.3.1.2. Installing Mylyn
14.3.1.3. Installing AspectJ Development Tools (AJDT)
14.3.1.4. Installing the Web Tools Platform (WTP)
14.3.2. Installing m2eclipse
14.4. Enabling the Maven Console
14.5. Creating a Maven Project
14.5.1. Checking Out a Maven Project from SCM
14.5.2. Creating a Maven Project from a Maven Archetype
14.5.3. Creating a Maven Module
14.6. Create a Maven POM File
14.7. Importing Maven Projects
14.7.1. Importing a Maven Project
14.7.2. Materializing a Maven Project
14.8. Running Maven Builds
14.9. Working with Maven Projects
14.9.1. Adding and Updating Dependencies and Plugins
14.9.2. Creating a Maven Module
14.9.3. Downloading Source
14.9.4. Opening Project Pages
14.9.5. Resolving Dependencies
14.10. Working with Maven Repositories
14.10.1. Searching For Maven Artifacts and Java classes
14.10.2. Indexing Maven Repositories
14.11. Maven Preferences
14.12. Summary
15. Site Generation
15.1. Introduction
15.2. Building a Project Site with Maven
15.3. Customizing the Site Descriptor
15.3.1. Customizing the Header Graphics
15.3.2. Customizing the Navigation Menu
15.4. Site Directory Structure
15.5. Writing Project Documentation
15.5.1. APT Example
15.5.2. FML Example
15.6. Deploying Your Project Website
15.6.1. Configuring Server Authentication
15.6.2. Configuring File and Directory Modes
15.7. Customizing Site Appearance
15.7.1. Customizing the Site CSS
15.7.2. Create a Custom Site Template
15.7.3. Reusable Website Skins
15.7.4. Creating a Custom Theme CSS
15.7.5. Customizing Site Templates in a Skin
15.8. Tips and Tricks
15.8.1. Inject XHTML into HEAD
15.8.2. Add Links under Your Site Logo
15.8.3. Add Breadcrumbs to Your Site
15.8.4. Add the Project Version
15.8.5. Modify the Publication Date Format and Location
15.8.6. Using Doxia Macros
16. Repository Manager
16.1. Introduction
16.1.1. History of Nexus
16.2. Installing Nexus
16.2.1. Downloading Nexus from Sonatype
16.2.2. Installing Nexus
16.2.3. Running Nexus
16.2.4. Startup Scripts for Redhat/Fedora/CentOS
16.2.5. Upgrading from a Previous Version
16.3. Configuring Maven to Use Nexus
16.3.1. Using the Nexus Central Proxy Repository
16.3.2. Using Nexus for Snapshot Repositories
16.3.3. Adding Repositories for Missing Dependencies
16.3.4. Adding a New Repository
16.3.5. Adding a Repository to a Group
16.4. Configuring Nexus
16.4.1. Customizing Server Configuration
16.4.2. Managing Repositories
16.4.3. Managing Groups
16.4.4. Managing Routes
16.4.5. Network Configuration
16.5. Maintaining Repositories
16.6. Deploying Artifacts to Nexus
16.6.1. Deploying Releases
16.6.2. Deploying Snapshots
16.6.3. Deploying Third-party Artifacts
17. Writing Plugins
17.1. Introduction
17.2. Programming Maven
17.2.1. What is Inversion of Control?
17.2.2. Introduction to Plexus
17.2.3. Why Plexus?
17.2.4. What is a Plugin?
17.3. Plugin Descriptor
17.3.1. Top-level Plugin Descriptor Elements
17.3.2. Mojo Configuration
17.3.3. Plugin Dependencies
17.4. Writing a Custom Plugin
17.4.1. Creating a Plugin Project
17.4.2. A Simple Java Mojo
17.4.3. Configuring a Plugin Prefix
17.4.4. Logging from a Plugin
17.4.5. Mojo Class Annotations
17.4.6. When a Mojo Fails
17.5. Mojo Parameters
17.5.1. Supplying Values for Mojo Parameters
17.5.2. Multi-valued Mojo Parameters
17.5.3. Depending on Plexus Components
17.5.4. Mojo Parameter Annotations
17.6. Plugins and the Maven Lifecycle
17.6.1. Executing a Parallel Lifecycle
17.6.2. Creating a Custom Lifecycle
17.6.3. Overriding the Default Lifecycle
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.3.1. Creating a JRuby Plugin
18.3.2. Ruby Mojo Implementations
18.3.3. Logging from a Ruby Mojo
18.3.4. Raising a MojoError
18.3.5. Referencing Plexus Components from JRuby
18.4. Writing Plugins in Groovy
18.4.1. Creating a Groovy Plugin
A. Appendix: Settings Details
A.1. Quick Overview
A.2. Settings Details
A.2.1. Simple Values
A.2.2. Servers
A.2.3. Mirrors
A.2.4. Proxies
A.2.5. Profiles
A.2.6. Activation
A.2.7. Properties
A.2.8. Repositories
A.2.9. Plugin Repositories
A.2.10. Active Profiles
B. Appendix: Sun Specification Alternatives

List of Figures

3.1. A Plugin Contains Goals
3.2. A Lifecycle is a Sequence of Phases
3.3. A Goal Binds to a Phase
3.4. Bound Goals are Run when Their Phases Execute
3.5. A Maven Project's Coordinates
3.6. Maven Space is a coordinate system of projects
3.7. Maven Resolves Transitive Dependencies
7.1. Multi-module Enterprise Application Module Relationships
7.2. Simple Object Model for Weather Data
7.3. Spring MVC Controllers Referencing Components in simple-weather and simple-persist.
7.4.
7.5.
9.1. The Project Object Model
9.2. The Super POM is always the base Parent
9.3. Multi-module Project Relationships
9.4. Project Inheritance for a-parent and project-a
9.5. maven-book Multi-module vs. Inheritance
9.6. Enterprise Multi-module vs. Inheritance
9.7. Using parent projects as "prototypes" for specialized projects
12.1. Assembly Descriptor Picture
14.1. Enabling the Maven Console in Eclipse
14.2. Creating a New Project with m2eclipse Wizards
14.3. Checkout a New Project from Subversion
14.4. Creating a New Project with a Maven Archetype
14.5. Creating a New Maven Module
14.6. Selecting a Parent Project for a New Maven Module
14.7. Creating a New POM
14.8. Adding Dependencies to a New POM
14.9. Querying the Central Repository for Dependencies
14.10. Importing a Maven Project
14.11. Importing a Multi-module Maven Project
14.12. Materializing a Maven Project
14.13. Selecting Artifact to Materialize
14.14. Materializing Apache Camel
14.15. Running an Eclipse build with Run As..
14.16. Configuring a Maven Build as a Run Configuration
14.17. Available Maven Features
14.18. Manually Adding a Dependency to the Project's POM
14.19. Updating Maven Dependencies
14.20. Searching for a Dependency
14.21. Searching for Artifacts and Classes
14.22. Searching for a POM
14.23. Searching the Repository for a Class
14.24. Show Maven Indexes View
14.25. Maven Indexes View
14.26. Locating a POM from the Indexes View
14.27. Maven Preferences for Eclipse
14.28. Maven Goal Dialogs
14.29. Maven Installations Preference Page
14.30. Enabling the Maven Version Decorator
14.31. Package Explorer without Maven Version Decorator
14.32. Package Explorer with Maven Version Decorator Enabled
15.1. Simple Generated Maven Site
15.2. Customized Sample Project Web Site
16.1. Nexus Login Window (default login/password is admin/admin123)
16.2. Results of an Artifact Search for "maven"
16.3. Adding a Nexus Repository
16.4. Adding New Repositories to a Nexus Group
16.5. Nexus Server Configuration
16.6. Repository Configuration Screen for a Proxy Repository
16.7. Group Configuration Screen in Nexus
16.8. Routes Configuration Screen in Nexus

List of Examples

1.1. A Simple Ant build.xml file
1.2. A Sample Maven pom.xml
3.1. Simple project's pom.xml file
4.1. Initial POM for the simple-weather project
4.2. Adding Organizational, Legal, and Developer Information to the pom.xml
4.3. Adding Dom4J, Jaxen, Velocity, and Log4J as Dependencies
4.4. Simple Weather's Weather Model Object
4.5. Simple Weather's Main Class
4.6. Simple Weather's YahooRetriever Class
4.7. Simple Weather's YahooParser Class
4.8. Simple Weather's WeatherFormatter Class
4.9. Simple Weather's Log4J Configuration File
4.10. Simple Weather's Output Velocity Template
4.11. Simple Weather's YahooParserTest Unit Test
4.12. Simple Weather's WeatherFormatterTest Unit Test
4.13. Adding a Test-scoped Dependency
4.14. Simple Weather's WeatherFormatterTest Expected Output
4.15. Simple Weather's YahooParserTest XML Input
4.16. Ignoring Unit Test Failures
4.17. Plugin Parameter Expressions
4.18. Skipping Unit Tests
4.19. Configuring the Maven Assembly Descriptor
5.1. Initial POM for the simple-web project
5.2. Configuring the Jetty Plugin
5.3. Contents of src/main/webapp/index.jsp
5.4. Contents of src/main/webapp/WEB-INF/web.xml
5.5. SimpleServlet Class
5.6. Mapping the Simple Servlet
5.7. Add the Servlet 2.4 Specification as a Dependency
5.8. Adding the JSP 2.0 Specification as a Dependency
6.1. simple-parent Project POM
6.2. simple-weather Module POM
6.3. The WeatherService class
6.4. simple-webapp Module POM
6.5. simple-webapp WeatherServlet
6.6. simple-webapp web.xml
7.1. simple-parent Project POM
7.2. simple-model pom.xml
7.3. Annotated Weather Model Object
7.4. simple-model's Condition model object.
7.5. simple-weather Module POM
7.6. The WeatherService class
7.7. Spring Application Context for the simple-weather Module
7.8. simple-persist POM
7.9. simple-persist's WeatherDAO Class
7.10. Spring Application Context for simple-persist
7.11. simple-persist hibernate.cfg.xml
7.12. POM for simple-webapp
7.13. simple-webapp WeatherController
7.14. weather.vm template rendered by WeatherController
7.15. simple-web HistoryController
7.16. history.vm rendered by the HistoryController
7.17. Spring Controller configuration weather-servlet.xml
7.18. web.xml for simple-webapp
7.19.
7.20.
7.21.
7.22.
8.1. Final POM for simple-parent
8.2. Final POM for simple-command
8.3. Final POM for simple-model
8.4. Final POM for simple-persist
8.5. Final POM for simple-weather
8.6. Final POM for simple-webapp
9.1. The Super POM
9.2. The Simplest POM
9.3. Project Dependencies
9.4. Declaring Optional Dependencies
9.5. Specifying a Dependency Range: JUnit 3.8 - JUnit 4.0
9.6. Specifying a Dependency Range: JUnit <= 3.8.1
9.7. Excluding a Transitive Dependency
9.8. Excluding and Replacing a Transitive Dependency
9.9. Defining Dependency Versions in a Top-level POM
9.10. top-group modules element
9.11. sub-group modules element
9.12. Project Inheritance
9.13. Consolidating Dependencies in a Single POM Project
9.14. Declaring a Dependency on a POM
10.1. Triggering a Goal on pre-clean
10.2. Customizing Behavior of the Clean Plugin
10.3. Custom Packaging Type for Adobe Flex (SWF)
10.4. Using Properties in Project Resources
10.5. default.properties in src/main/filters
10.6. Filter Resources (Replacing Properties)
10.7. Configuring Additional Resource Directories
10.8. Filtering Script Resources
10.9. Setting the Source and Target Versions for the Compiler Plugin
10.10. Overriding the Default Source Directory
10.11. Overriding the Location of Test Source and Output
10.12. Configuring Surefire to Ignore Test Failures
11.1. Using a Maven Profile to Override Production Compiler Settings
11.2. Elements Allowed in a Profile
11.3. Dynamic Inclusion of Submodules Using Profile Activation
11.4. Profile Activation Parameters: JDK Version, OS Parameters, and Properties
11.5. Activating Profiles in the Absence of a Property
11.6. Placing Profiles in a profiles.xml File
11.7. Defining User-specific Settings Profiles (~/.m2/settings.xml)
11.8. Defining Active Settings Profiles
11.9. ~/.m2/settings.xml defines a default profile setting environment.type
11.10. Project Profile Activated by environment.type equalling 'dev'
11.11. Storing Secrets in a User-specific Settings Profile
11.12. Qualifying Artifacts with Platform Activated Project Profiles
11.13. Qualifying Artifacts with Platform Activated Project Profiles and Variable Substitution
11.14. Depending on a Qualified Artifact
12.1. Assembly Descriptor for Executable JAR
12.2. Configuring the project assembly in top-level POM
12.3. Activating the Assembly Plugin Configuration in Child Projects
12.4. POM for the Assembly Bundling Project
12.5. Required Assembly Descriptor Elements
12.6. Including a JAR file in an Assembly using files
12.7. Including Files with fileSet
12.8. Definition of Default Exclusion Patterns from Plexus Utils
12.9. Defining Dependency Sets Using Scope
12.10. Using Dependency Excludes and Includes in dependencySets
12.11. Excluding Files from a Dependency Unpack
12.12. Includes and Excluding Modules with a moduleSet
12.13. Including JavaDoc from Modules in an Assembly
12.14. Including Module Artifacts and Dependencies in an Assembly
13.1. User-defined Properties in a POM
13.2. User-defined Properties in a Profile in a POM
13.3. Referencing Maven Properties from a Resource
13.4. Defining Variables and Activating Resource Filtering
15.1. An Initial Site Descriptor
15.2. Adding a Banner Left and Banner Right to Site Descriptor
15.3. Creating Menu Items in a Site Descriptor
15.4. Adding a Link to the Site Menu
15.5. APT Document
15.6. FAQ Markup Language Document
15.7. Configuring Site Deployment
15.8. Storing Server Authentication in User-specific Settings
15.9. Configuring File and Directory Modes on Remote Servers
15.10. Customizing the Page Template in a Project's POM
15.11. Adding a Menu Item to a Site Descriptor
15.12. Configuring a Custom Site Skin in Site Descriptor
15.13. Injecting HTML into the HEAD element
15.14. Adding Links Under Your Site Logo
15.15. Configuring the Site's Breadcrumbs
15.16. Positioning the Version Information
15.17. Positioning the Publish Date
15.18. Configuring the Publish Date Format
15.19. Output of the Snippet Macro in XHTML
16.1. Configuring Maven Settings for Nexus (~/.m2/settings.xml)
16.2. Configuring Maven to Use Nexus for Releases and Snapshots
16.3. Contents of ${NEXUS_HOME}/conf/plexus.properties
16.4. Configuring Release Repository for Deployment
16.5. Configuring Snapshot Repository for Deployment
16.6. Oracle JDBC JAR Dependency
17.1. Plugin Descriptor
17.2. A Plugin Project's POM
17.3. A Simple EchoMojo
17.4. Maven Metadata for the Maven Plugin Group
17.5. Customizing the Plugin Groups in Maven Settings
17.6. Configuring a Plugin Prefix
17.7. A Plugin with Multi-valued Parameters
17.8. Depending on a Plexus Component
17.9. Define a Custom Lifecycle in lifecycle.xml
17.10. Forking a Customer Lifecycle from a Mojo
17.11. Overriding the Default Lifecycle
17.12. Configuring a Plugin as an Extension
18.1. POM for an Ant Maven Plugin
18.2. Echo Ant Mojo
18.3. Echo Ant Mojo Descriptor
18.4. POM for a JRuby Maven Plugin
18.5. The Echo Ruby Mojo
18.6. Referencing a Maven Project from a Ruby Mojo
18.7. Raising a MojoError from a Ruby Mojo
18.8. Depending on a Plexus Component from a Ruby Mojo
18.9. POM for a Groovy Maven Plugin
18.10.
A.1. Overview of top-level elements in settings.xml
A.2. Simple top-level elements in settings.xml
A.3. Server configuration in settings.xml
A.4. Mirror configuration in settings.xml
A.5. Proxy configuration in settings.xml
A.6. Defining Activation Parameters in settings.xml
A.7. Setting the ${user.install} property in settings.xml
A.8. Repository Configuration in settings.xml
A.9. Setting active profiles in settings.xml
B.1. Adding JTA 1.0.1B to a Maven Project

Creative Commons License
Maven: The Definitive Guide by Sonatype, Inc. is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 United States License.
Based on a work at www.sonatype.com.

Favicon Report Typos, Errors, Ask Questions, Discuss, Share Your Ideas with us at Get Satisfaction