Synopses & Reviews
Maven is a new project management and comprehension tool which provides an elegant way to share build logic across projects. In terms of capabilities, Maven is an improvement to Apache Ant-thanks to numerous plug-ins and built-in integration with unit testing frameworks such as JUnit. Tired of writing the same build logic for every project? Using Maven, you can leverage the experience of the community to avoid the tedious process of creating yet another build script for each new project.Maven: A Developer's Notebook begins by introducing you to the concept of project object model (POM), and then offers further details on the essential features of Maven. Like all titles in O'Reilly's Developer's Notebook series, this no-nonsense book skips the boring prose and cuts right to the chase. It's an approach that forces you to get your hands dirty by working through a series of poignant labs-exercises that speak to you instead of at you.Plus, Maven: A Developer's Notebook is the first book on the subject to hit the market, so you know the information is fresh and timely. If you're a Java programmer, you'll be armed with all the critical information you need to get up to speed on this powerful new build tool. You'll discover how Maven can help you:
- manage a project's build, reporting, and documentation, all from a central piece of information
- break a complex project into a series of smaller subprojects
- report on code quality, unit tests, code duplication, and project activity
- create a custom remote repository
- build simple and complex plug-ins
In the end, you'll find yourself spending less time working on your project's build system and more time working on your project's code.
About the Author
In addition to being an active member of the Maven development team, Vincent Massol is the creator of the Jakarta Cactus framework. After having spent four years as a technical architect on several major projects (mostly J2EE), Vincent is now the co-founder and CTO of Pivolis, a company specializing in applying agile methodologies to offshore software development. He lives in the City of Light, Paris, France.
Tim M O'Brien is a professional singer and programmer living and working in the Chicago area. He prefers Emacs to vi. Tim discovered programming on a TRS-80, and went on to study (and subsequently forget) Electrical Engineering at UVA. In his free time, Tim likes to sleep, study music, build toys with microcontrollers, and participate in open source projects. Tim is active in the Jakarta Commons project.
Table of Contents
The Developer's Notebook Series; Notebooks Are...; Notebooks Aren't...; Organization; Preface; The Future: Maven 2; How This Book Is Organized; How This Book Was Written; About This Book's Web Site; About This Book's Examples; About the Authors; Conventions Used in This Book; Using Code Examples; How to Contact Us; Safari® Enabled; Acknowledgments; Chapter 1: Maven Jump-Start; 1.1 Installing Maven; 1.2 Starting a New Project; 1.3 Using Maven Behind a Proxy; 1.4 Compiling and Testing a Project; 1.5 Working with the Project Object Model; 1.6 Listing Available Goals; 1.7 Producing Debug Information; 1.8 Adding a Dependency; 1.9 Depending on Snapshots; 1.10 Performing an Offline Build; 1.11 Using the Maven Console; 1.12 Generating an Eclipse Project; 1.13 Using the Eclipse Maven Plug-in; 1.14 Generating an Ant Build File; 1.15 Migrating a Project from Ant to Maven; 1.16 Generating Project Documentation; 1.17 Telling Maven About Your Team; 1.18 Pointing Maven at Source Control; 1.19 Creating a Project Web Site; 1.20 Customizing Site Reports; Chapter 2: Customizing Maven; 2.1 Installing a Plug-in from a Remote Repository; 2.2 Customizing Plug-in Behavior; 2.3 Writing a Custom Goal; 2.4 Defining a preGoal; 2.5 Defining Custom Properties; 2.6 Running the Program from a Custom Goal; 2.7 Defining the Default Goal; 2.8 Overriding Properties; 2.9 Enumerating Dependencies; 2.10 Customizing Site Look and Feel; 2.11 Using the FAQ Plug-in; Chapter 3: Multiproject Maven; 3.1 Dividing and Conquering; 3.2 Using POM Inheritance; 3.3 Writing the Quote Generator; 3.4 Sharing Artifacts Through the Local Maven Repository; 3.5 Using the WAR Plug-in; 3.6 Using the Jetty Plug-in to Start a Web Application; 3.7 Executing HtmlUnit Tests; 3.8 Building All Subprojects Simultaneously; 3.9 Creating Custom Top-Level Goals; 3.10 Generating a Multiproject Web Site; Chapter 4: Project Reporting and Publishing; 4.1 Reporting on Project Content; 4.2 Reporting Testing Status; 4.3 Reporting on Code Best Practices; 4.4 Reporting on Duplicate Code; 4.5 Generating a Quality Dashboard; 4.6 Tracking Project Activity; 4.7 Tracking Project Changes; 4.8 Publishing Maven Artifacts; 4.9 Announcing a Project Release; 4.10 Reporting Project Releases; 4.11 Publishing a Project Web Site; Chapter 5: Team Collaboration with Maven; 5.1 Sharing a Maven Installation; 5.2 Creating Your Own Remote Maven Repository; 5.3 Setting Up a Continuous Integration Build; 5.4 Using Binary Dependencies; Chapter 6: Writing Maven Plug-ins; 6.1 Writing a Simple JAR Execution Plug-in; 6.2 Installing a Plug-in from Its Sources; 6.3 Testing a Plug-in; 6.4 Writing a Complex Plug-in: The Logifier; 6.5 Writing a Logging Aspect Using AspectJ; 6.6 Using Plug-in Resources; 6.7 Implementing the Logifier Build Logic; 6.8 Executing the Logifier Plug-in; 6.9 Adding Dynamic Dependencies; 6.10 Writing a Plug-in That Generates Reports; 6.11 Creating an XDoc File Using JSL; 6.12 Publishing a Plug-in to a Remote Repository; Appendix A: Maven Plug-ins; A.1 Plug-ins Reference; A.2 Auto-Downloading a Plug-in; A.3 Installing a Plug-in Manually; A.4 Depending on a Plug-in; Colophon;