Table of Contents
Preface
Chapter 1: Maven in a Nutshell
Chapter 2: Staying in Control with Archiva
Chapter 3: Building an Application Using Maven
Chapter 4: Application Testing with Maven
Chapter 5: Reporting and Checks
Chapter 6: Useful Maven Plugins
Chapter 7: Maven Best Practices
Chapter 8: Continuum: Ensuring the Health of your Source Code
Chapter 9: Continuum in Depth
Chapter 10: Archiva in a Team
Chapter 11: Archetypes
Chapter 12: Maven, Archiva, and Continuum in the Enterprise
Appendix A: Troubleshooting Maven
Appendix B: Recent Maven Features
Appendix C: Migrating Archiva and Continuum Data
Index
- Chapter 1: Maven in a Nutshell
- A whirlwind tour
- Installing Maven
- Creating a new project from an archetype
- Building the project
- Reusing builds
- Adding dependencies
- Adding functionality through plugins
- Adding resources
- Running tests
- Getting help
- Enhancing the development process
- Viewing detailed project information
- Multiple module builds
- What if I need to convert an existing project?
- Summary
- A whirlwind tour
- Chapter 2: Staying in Control with Archiva
- Importance of a repository manager
- Installing Archiva
- Separating your repositories
- Hooking up Maven with Archiva
- Setting up a proxy
- Configuring your settings.xml
- Building your project
- Searching for artifacts in Archiva
- Deploying from Maven
- Creating a new user
- Configuring and deploying from Maven
- Deploying via web form
- Summary
- Chapter 3: Building an Application Using Maven
- Introducing the sample project
- Setting up a multi-module build
- Creating the parent POM
- Creating the modules
- Dependency management
- Fleshing out the example application
- Creating an organization POM
- Configuring basic reports
- Preparing for non-code modules
- Creating a modules tree
- Adding a documentation module
- Building the site automatically
- Assembling the site for distribution
- Adding site resources
- Adding a skin
- Distributing the application
- Generating the runtime environment with the App Assembler plugin
- Generating the assembly archive
- Adding the documentation to the distribution archive
- Summary
- Chapter 4: Application Testing with Maven
- Types of testing in Maven
- Unit testing (or code testing)
- Integration testing (or module testing)
- Functional and other types of testing
- Working with tests
- Surefire plugin configuration
- Controlling the execution of tests
- Inclusion and exclusion of tests
- Running specific tests from the command line
- Skipping tests temporarily
- Producing a report for the test results
- Reviewing test coverage
- Coverage and multimodule projects
- Surefire plugin configuration
- Integration, functional, and other testing
- Running integration tests using naming patterns
- Operating the Selenium server
- Deploying the application to a container
- Simplifying test grouping with TestNG
- Using a separate integration test module
- Altering integration tests with profiles
- Using TestNG parameters
- Measuring coverage for integration tests
- Running integration tests using naming patterns
- Summary
- Types of testing in Maven
- Chapter 5: Reporting and Checks
- Review: Example application
- Constructing the developer's site
- Maven reports
- Adding reports to the project
- Configuring plugins for both reporting and the build
- Configuring reports in the site life cycle
- Setting up quality checks
- Setting a minimum coverage requirement
- Best practices for configuring coverage checks
- Reporting and quality tools
- Dependencies
- Javadoc
- Checkstyle
- PMD
- FindBugs
- Clirr
- Other tools
- Reporting best practices
- Choosing reports
- Site deployment
- Introducing and selecting failure thresholds
- Tying it all together
- Dashboard plugin
- Sonar
- Summary
- Chapter 6: Useful Maven Plugins
- The Remote Resources plugin
- Creating a Remote Resource bundle
- Processing Remote Resources in a project
- The Build Number plugin
- The Shade plugin
- Building a standalone artifact
- Shading dependencies
- The Build Helper plugin
- Adding source directories
- Attaching arbitrary artifacts
- Other goals
- The AntRun plugin and scripting languages
- Running simple tasks
- Interacting with the Maven project
- Converting Ant or Maven 1 builds
- Maven plugins written in Ant
- Other scripting languages
- The Exec plugin
- Adding the Exec plugin to the Build life cycle
- Running the Exec plugin standalone
- Summary
- The Remote Resources plugin
- Chapter 7: Maven Best Practices
- Preparing the development environment
- Maven installation and user settings
- Encrypting server passwords
- Project settings
- Configuring repositories
- Maven installation and user settings
- Keeping it simple
- Using conventions
- Using inheritance
- Decomposing the build into modules
- Aligning the source structure
- Selecting group and artifact identifiers
- Building modules together
- Each module should be independently useful
- Watching the dependencies
- Separating API from implementation
- Trimming dependencies
- Dependency version management
- Profiles and pipelining
- Scripting and writing plugins
- Creating and using archetypes
- Build portability
- Setting expectations
- Hard coding
- Portable profiles
- Portable artifacts
- Resource filtering
- Shared resources
- Build reproducibility
- Summary
- Preparing the development environment
- Chapter 8: Continuum: Ensuring the Health of your Source Code
- Knowing when your build breaks
- Setting up Continuum
- Setting up a source repository
- Installing prerequisites
- Installing and configuring Continuum
- Using Continuum
- At a glance
- The build queues
- The build definition
- Project group build definition
- Project build definition
- The notifiers
- Different types of notifiers
- Configuring notifiers in Maven
- The Build results
- Dependency changes
- Installations and build environments
- Installations
- Build environments
- Summary
- Chapter 9: Continuum in Depth
- Releasing projects
- Release early, release often
- Maven release process
- Release profile
- Releasing projects using Continuum
- Preparing a release
- Finalizing a release
- Viewing release history
- Other types of releases
- Troubleshooting releases in Continuum
- Build pipelining and multiple build definitions
- Parallel builds
- How it works
- Configuring parallel builds
- Distributed builds
- Master and slave
- Configuring distributed builds
- Doing project releases on a build agent
- Maintenance
- Configuring multiple local repositories
- Cleaning up local repositories
- Cleaning up directories
- Summary
- Releasing projects
- Chapter 10: Archiva in a Team
- Roles and permissions
- Introducing repository groups
- Configuring and using repository groups
- RSS feeds—discovering new artifacts in your repository
- Repository level feeds
- Artifact level feeds
- Deleting artifacts in your repository
- The Archiva reports
- Repository statistics
- Repository health
- The Archiva consumers
- What is a consumer?
- Archiva's maintenance-savvy consumers
- Purging outdated snapshots
- Correcting Maven metadata
- Creating missing checksums
- Database cleanup consumers
- Summary
- Chapter 11: Archetypes
- What are Maven archetypes?
- Benefits of Maven archetypes
- Generating projects
- From archetype:create to archetype:generate
- Using archetypes within multi-module projects
- Common archetypes
- Maven site archetype
- Maven Mojo (plugin) archetype
- Maven simple J2EE archetype
- The AppFuse Spring archetype
- Other examples
- What are Maven archetypes?
- Writing a new archetype
- Creating an archetype from a skeleton
- Using the custom archetype
- Managing catalogs
- Summary
- Chapter 12: Maven, Archiva, and Continuum in the Enterprise
- Configuring security
- A brief look at Redback
- Setting up security for multiple teams in Continuum
- Setting up security for multiple teams in Archiva
- Additional Redback configuration
- Using LDAP
- Interfacing with other tools in the enterprise
- Continuum web services
- Building the Continuum plugin
- Using Continuum's web services
- Archiva web services
- Building the Archiva plugin
- Using Archiva's web services
- Continuum web services
- Summary
- Configuring security
- Appendix A: Troubleshooting Maven
- Examining Maven output
- Using debug mode
- Confirming the expected models
- Analyzing dependencies
- Download problems
- Appendix B: Recent Maven Features
- Server password encryption
- Reactor project selection
- Resuming a failed build
- Building a subset of modules
- The Reactor plugin
- Building modules with local changes
- Reconfiguring default life cycle goals
- Parallel artifact resolution
- Appendix C: Migrating Archiva and Continuum Data
- Using a different database
- Database backup and migrating between versions
- Migrating Continuum
- Migrating Archiva



