Java Power Tools

Book description

All true craftsmen need the best tools to do their finest work, and programmers are no different. Java Power Tools delivers 30 open source tools designed to improve the development practices of Java developers in any size team or organization. Each chapter includes a series of short articles about one particular tool -- whether it's for build systems, version control, or other aspects of the development process -- giving you the equivalent of 30 short reference books in one package.

No matter which development method your team chooses, whether it's Agile, RUP, XP, SCRUM, or one of many others available, Java Power Tools provides practical techniques and tools to help you optimize the process. The book discusses key Java development problem areas and best practices, and focuses on open source tools that can help increase productivity in each area of the development cycle, including:

  • Build tools including Ant and Maven 2
  • Version control tools such as CVS and Subversion, the two most prominent open source tools
  • Quality metrics tools that measure different aspects of code quality, including CheckStyle, PMD, FindBugs and Jupiter
  • Technical documentation tools that can help you generate good technical documentation without spending too much effort writing and maintaining it
  • Unit Testing tools including JUnit 4, TestNG, and the open source coverage tool Cobertura
  • Integration, Load and Performance Testing to integrate performance tests into unit tests, load-test your application, and automatically test web services, Swing interfaces and web interfaces
  • Issue management tools including Bugzilla and Trac
  • Continuous Integration tools such as Continuum, Cruise Control, LuntBuild and Hudson
If you are a Java developer, these tools can help improve your development practices, and make your life easier in the process. Lead developers, software architects and people interested in the wider picture will be able to gather from these pages some useful ideas about improving your project infrastructure and best practices.

Publisher resources

View/Submit Errata

Table of contents

  1. Dedication
  2. Foreword
  3. Preface
    1. How This Book Is Organized
      1. Build Tools
      2. Version Control Tools
      3. Unit Testing
      4. Integration, Load, and Performance Testing
      5. Quality Metrics Tools
      6. Technical Documentation Tools
      7. Issue Management Tools
      8. Continuous Integration Tools
    2. Who Should Read This Book
    3. What This Book Doesn’t Cover
    4. Contributing Authors
    5. Technical Reviewers
    6. Conventions
    7. Source Code
    8. About the Title
    9. Acknowledgments
    10. Using Code Examples
    11. Safari® Enabled
    12. How to Contact Us
  4. Introduction
  5. I. Build Tools
    1. 1. Setting Up a Project Using Ant
      1. Ant in the Build Process
      2. Installing Ant
        1. Installing Ant on a Unix Machine
        2. Installing Ant on Windows
        3. ANT_OPTS and ANT_ARGS: Some Other Useful Environment Variables
      3. A Gentle Introduction to Ant
        1. Basic Ant Concepts
        2. A Simple Ant Build File
        3. Running Ant
        4. Dependencies Between Targets
        5. Documenting Your Project
      4. Compiling Your Java Code in Ant
      5. Customizing Your Build Script Using Properties
      6. Running Unit Tests in Ant
        1. Using JUnit in Ant
        2. Preparing Your Build for Automated Tests
        3. Using the <junit> Task
        4. Running Multiple Tests
        5. Running Tests in a Separate JVM
        6. Generating HTML Test Reports
        7. Using Asserts in Your Test Cases
      7. Generating Documentation with Javadoc
      8. Packaging Your Application
        1. Generating a JAR File
        2. Generating a WAR File or an EAR File
      9. Deploying Your Application
        1. Copying Files
        2. Other Deployment Techniques
      10. Bootstrapping Your Build Scripts
      11. Using Maven Dependencies in Ant with the Maven Tasks
        1. The Maven 2.0 Ant Tasks
        2. Installing the Maven Ant Tasks
        3. Declaring and Using Maven Dependencies in Ant
        4. Packaging the Dependencies
        5. Choosing Your Repositories
        6. Using an Existing Maven POM File
      12. Using Ant in Eclipse
      13. Using Ant in NetBeans
      14. Manipulating XML with XMLTask
        1. Examples
        2. DTDs and XMLTask
        3. Driving Ant via XMLTask
        4. Other Tricks
          1. Changing encodings
          2. Maintaining documents with comments
      15. Conclusion
    2. 2. Setting Up a Project Using Maven 2
      1. Maven and the Development Build Process
      2. Maven and Ant
      3. Installing Maven
        1. Installing Maven on a Unix Machine
        2. Installing Maven on a Windows Machine
      4. Declarative Builds and the Maven Project Object Model
        1. An Introduction to Declarative Build Management
        2. Project Context and Artifacts
        3. A Human-Readable Project Description
        4. Declaring your Continuous Integration Server
        5. Defining the Development Team
        6. Managing Dependencies
        7. Customizing Your Build Process
        8. Setting Up Reporting
        9. Defining Build Profiles
      5. Understanding the Maven 2 Lifecycle
      6. The Maven Directory Structure
      7. Configuring Maven to Your Environment
        1. Using a Proxy
        2. Using a Local Mirror
        3. Changing Your Maven Cache Location
        4. Defining Arbitrary Environment-Specific Variables
      8. Dependency Management in Maven 2
        1. Declaring Dependencies
        2. Managing Transitive Dependencies
        3. Dependency Scope
        4. Handling Proprietary Dependencies
        5. Refactoring Your Dependencies Using Properties
      9. Looking for Dependencies with MvnRepository
      10. Project Inheritance and Aggregation
      11. Creating a Project Template with Archetypes
      12. Compiling Code
      13. Testing Your Code
      14. Packaging and Deploying Your Application
      15. Deploying an Application Using Cargo
      16. Using Maven in Eclipse
      17. Using Maven in NetBeans
      18. Using Plug-Ins to Customize the Build Process
        1. Creating a Plug-In
        2. Manipulating the Build Lifecycle
        3. Hooking into Maven
        4. Using Plexus Components
      19. Setting Up an Enterprise Repository with Archiva
        1. Installing Archiva
        2. Configuring Repositories in Archiva
        3. User Management
        4. Browsing the Repository
        5. Running Archiva on Another Port
        6. Archiva Proxy Connectors
        7. Setting Up Remote Repositories
        8. Configuring Archiva Behind a Proxy
        9. Using Maven with Archiva
        10. Manually Deploying a File to an Archiva Repository
      20. Setting Up an Enterprise Repository Using Artifactory
        1. Setting Up the Maven Repository Using Artifactory
          1. The Artifactory directory structure
          2. Deploy in Tomcat 6
          3. Set up the Maven repositories
        2. Configuring Maven to Use the New Repository
          1. Configure Maven using project “pom.xml”
          2. Configure Maven using settings.xml
          3. Building using the new Maven repository
        3. Installing Artifacts to the Repository
          1. Installing artifacts using the web UI
          2. Installing artifacts from Maven command line
        4. Running Artifactory Through a Proxy
        5. Adding Other Remote Repositories
        6. Backing Up the Repository
      21. Using Ant in Maven
        1. Using Existing build.xml Files
        2. Embedding Ant Code in the POM
        3. External Dependencies
        4. Making Ant Plug-Ins
        5. Using Maven in Ant
        6. Generating Ant Script from a POM
      22. Advanced Archetypes
        1. Creating Your Own Archetypes
      23. Using Assemblies
        1. Creating Assemblies
        2. Built-in Descriptors
        3. Assemblies with Profiles
  6. II. Version Control Tools
    1. 3. Setting Up Version Control Using CVS
      1. An Introduction to CVS
      2. Setting Up a CVS Repository
      3. Creating a New Project in CVS
      4. Checking Out a Project
      5. Working with Your Files—Updating and Committing
      6. Resolving a Locked Repository
      7. Working with Keyword Substitution
      8. Working with Binary Files
      9. Tags in CVS
      10. Creating Branches in CVS
      11. Merging Changes from a Branch
      12. Viewing Change History
      13. Reverting Changes
      14. Using CVS in Windows
    2. 4. Setting Up Version Control Using Subversion
      1. An Introduction to Subversion
        1. Revision Numbers and Atomic Updates
        2. Fast Branching and Tagging
        3. Lightweight Network Transactions
        4. Handling Binary Files
      2. Installing Subversion
      3. Subversion Repository Types
      4. Setting Up a Subversion Repository
      5. Setting Up a New Subversion Project
      6. Checking Out Your Working Copy
      7. Importing Existing Files into Subversion
      8. Understanding Subversion Repository URLs
      9. Working with Your Files
        1. Updating Your Work Directory
        2. Working with Your Local Copy
        3. Committing Your Work
      10. Seeing Where You’re At: The Status Command
      11. Resolving Conflicts
      12. Using Tags, Branches, and Merges
      13. Rolling Back to a Previous Revision
      14. Using File Locking with Binary Files
      15. Breaking and Stealing Locks
      16. Making Locked Files Read-Only with the svn:needs-lock Property
      17. Using Properties
        1. Preserving the Executable Flag using svn:executable
        2. Forcing the File Type with svn:mime-type
        3. Making Subversion Ignore Files with svn:ignore
        4. Handling OS-Specific End-of-Lines with svn:eol-style
      18. Change History in Subversion: Logging and Blaming
      19. Setting Up a Subversion Server with svnserve
      20. Setting Up a Secure svnserve Server
      21. Setting Up a WebDAV/DeltaV Enabled Subversion Server
      22. Setting Up a Secure WebDAV/DeltaV Server
      23. Customizing Subversion with Hook Scripts
      24. Installing Subversion As a Windows Service
      25. Backing Up and Restoring a Subversion Repository
      26. Using Subversion in Eclipse
        1. Installing Subclipse
        2. Defining a Repository
        3. Adding a New Project to the Repository
        4. Creating a Project from the Subversion Repository
        5. Working with Files
        6. Keeping Track of Changes
        7. Branching and Merging
      27. Using Subversion in NetBeans
        1. Installing Subversion Support
        2. Creating a Subversion-Based Project
        3. Working with Your Files
        4. Keeping Track of Changes
        5. Branching and Merging
      28. Using Subversion in Windows
        1. Using TortoiseSVN in Windows Explorer
        2. Importing a New Project into the Repository
        3. Obtaining a Working Copy
        4. Committing Your Changes with TortoiseSVN
        5. Updating Your Working Copy
        6. Exploring the Repository
      29. Defect Tracking and Change Control
      30. Using Subversion in Ant
        1. Installing the <svn> Task
        2. Checking Out a Project
        3. Updating Code from the Repository
        4. Exporting a Directory Structure
        5. Creating a New Tag
      31. Conclusion
  7. III. Continuous Integration
    1. 5. Setting Up a Continuous Integration Server with Continuum
      1. An Introduction to Continuum
      2. Installing a Continuum Server
      3. Manually Starting and Stopping the Server
      4. Checking the Status of the Server
      5. Running the Continuum Server in Verbose Mode
      6. Adding a Project Group
      7. Adding a Maven Project
      8. Adding an Ant Project
      9. Adding a Shell Project
      10. Managing Your Project Builds
      11. Managing Users
      12. Setting Up Notifiers
      13. Configuring and Scheduling Builds
      14. Debugging Your Builds
      15. Configuring the Continuum Mail Server
      16. Configuring the Continuum Web Site Ports
      17. Automatically Generating a Maven Site with Continuum
      18. Configuring a Manual Build Task
      19. Conclusion
    2. 6. Setting Up a Continuous Integration Server with CruiseControl
      1. An Introduction to CruiseControl
      2. Installing CruiseControl
      3. Configuring an Ant Project
      4. Keeping People Notified with Publishers
      5. Setting Up a Maven 2 Project in CruiseControl
      6. The CruiseControl Dashboard
      7. Third-Party Tools
        1. CruiseControl Configuration Tool
        2. Firefox and Thunderbird Integration
      8. Conclusion
    3. 7. LuntBuild—A Web-Based Continuous Integration Server
      1. An Introduction to LuntBuild
      2. Installing LuntBuild
      3. Configuring the LuntBuild Server
      4. Adding a Project
        1. Configuring the Project Basics
        2. VCS Adaptors
        3. Builders
        4. Scheduling
        5. Login Mapping
      5. Using Project Variables for Version Numbering
      6. Build Results Diagnostics
      7. Using LuntBuild with Eclipse
      8. Reporting on Test Coverage in Luntbuild Using Cobertura
        1. Introduction
        2. Extending Luntbuild with Extension Points
        3. Creating a Cobertura Luntbuild Extension
        4. Using the Extension
        5. Running Cobertura with Ant
      9. Integrating Luntbuild with Maven
        1. Introduction
        2. Extending Maven to Support LuntBuild
          1. Setting up your project
          2. Creating the Mojo
          3. Integrating the Mojo with Maven
        3. Luntbuild Configuration
      10. Conclusion
    4. 8. Continuous Integration with Hudson
      1. An Introduction to Hudson
      2. Installing Hudson
      3. Managing the Hudson Home Directory
      4. Installing Upgrades
      5. Configuring Hudson
      6. Adding a New Build Job
        1. Building a Freestyle Project
        2. Building a Maven Project
      7. Organizing Your Jobs
      8. Monitoring Your Builds
      9. Viewing and Promoting a Particular Build
      10. Managing Users
      11. Authentication and Security
      12. Viewing Changes
      13. Hudson Plug-Ins
      14. Keeping Track of Test Results
      15. Keeping Track of Code Metrics
      16. Reporting on Code Coverage
    5. 9. Setting Up an Instant Messaging Platform with Openfire
      1. Instant Messaging in a Development Project
      2. Installing Openfire
      3. Setting Up Users and Accounts on Openfire
      4. Authenticating Users in an External Database
      5. Authenticating Users Against a POP3 Server
      6. Virtual Team Meetings with the Group Chat
      7. Extended Functionality with Openfire Plug-Ins
      8. Using Openfire with Continuum
      9. Using Openfire with CruiseControl
      10. Using Openfire with Luntbuild
      11. Sending Jabber Messages from a Java Application Using the Smack API
      12. Detecting Presence Using the Smack API
      13. Receiving Messages Using the Smack API
  8. IV. Unit Testing
    1. 10. Testing Your Code with JUnit
      1. JUnit 3.8 and JUnit 4
      2. Unit Testing with JUnit 4
      3. Setting Up and Optimizing Your Unit Test Cases
      4. Simple Performance Testing Using Timeouts
      5. Checking for Exceptions the Easy Way
      6. Using Parameterized Tests
      7. Using assertThat and the Hamcrest Library
      8. JUnit 4 Theories
      9. Using JUnit 4 with Maven 2
      10. Using JUnit 4 with Ant
      11. Selectively Running JUnit 4 Tests in Ant
        1. Running Individual Tests
        2. Running Tests Conditionally
      12. Integration Tests
      13. Using JUnit 4 in Eclipse
    2. 11. Next-Generation Testing with TestNG
      1. Introducing TestNG
      2. Creating Simple Unit Tests with TestNG
      3. Defining TestNG Test Suites
      4. The TestNG Eclipse Plug-In
        1. Installing the TestNG Plug-In
        2. Running TestNG Tests
      5. Using TestNG in Ant
      6. Using TestNG with Maven 2
      7. Managing the Test Lifecycle
      8. Using Test Groups
      9. Managing Dependencies
      10. Parallel Testing
      11. Test Parameters and Data-Driven Testing
      12. Checking for Exceptions
      13. Handling Partial Failures
      14. Rerunning Failed Tests
    3. 12. Maximizing Test Coverage with Cobertura
      1. Test Coverage
      2. Running Cobertura from Ant
      3. Checking the Code Coverage of TestNG Tests
      4. Interpreting the Cobertura Report
      5. Enforcing High Code Coverage
      6. Generating Cobertura Reports in Maven
      7. Integrating Coverage Tests into the Maven Build Process
      8. Code Coverage in Eclipse
      9. Conclusion
  9. V. Integration, Functional, Load, and Performance Testing
    1. 13. Testing a Struts Application with StrutsTestCase
      1. Introduction
      2. Testing a Struts Application
      3. Introducing StrutsTestCase
      4. Mock Tests Using StrutsTestCase
      5. Testing Struts Error Handling
      6. Customizing the Test Environment
      7. First-Level Performance Testing
      8. Conclusion
    2. 14. Integration Testing Databases with DbUnit
      1. Introduction
      2. Overview
        1. Purpose of DbUnit
        2. Setting Up DbUnit
        3. Running with DbUnit
      3. DbUnit Structure
        1. DatabaseTestCase
        2. IDatabaseConnection
        3. IDataSet
        4. ITable
        5. ITableMetaData
      4. Example Application
      5. Priming the Database
        1. Verifying Querying a Single Row
        2. Verifying Querying Multiple Rows
        3. Specifying NULLs by Omission
        4. Specifying NULLs by DTD
      6. Verifying the Database
        1. Verifying an UPDATE
        2. Verifying a DELETE
        3. Verifying an INSERT, Ignoring the Key
        4. Verifying an INSERT, with the Key
      7. Replacing Values
        1. Using NULL with a ReplacementDataSet
        2. Using NULL with a ValueReplacer
        3. Using an Image ValueReplacer
      8. Alternative Dataset Formats
        1. Using an XLS Dataset
        2. Using a CSV Dataset
        3. Using an InlineDataSet
      9. Dealing with Custom Data Types
        1. Specifying an INTERVALDS Data Type
      10. Other Applications
        1. Injecting the Test Fixture
        2. Using Transaction Rollback Teardown
        3. Testing a Stored Procedure
        4. Testing a View
        5. Exporting a Dataset with Ant
        6. Importing a Dataset with Ant
    3. 15. Performance Testing with JUnitPerf
      1. Introducing JUnitPerf
      2. Measuring Performance with TimedTests
      3. SimulatingLoad with LoadTests
      4. Load-Testing Tests That Are Not Thread-Safe
      5. Separating Performance Tests from Unit Tests in Ant
      6. Separating Performance Tests from Unit Tests in Maven
    4. 16. Load and Performance Testing with JMeter
      1. Introduction
      2. Installing JMeter
      3. Testing a Simple Web Application
        1. Setting Up a Thread Group
        2. Scheduling Your Tests
        3. Setting Up the HTTP Request Configuration Elements
        4. Adding an HTTP Request
      4. Structuring Your Test Case
      5. Recording and Displaying Test Results
        1. Visualizing Performance with the Graph Listener
        2. Getting More Details with the View Results Tree Listener
        3. Getting the Executive Summary
      6. Using the JMeter Proxy to Record a Test Case
      7. Testing Using Variables
      8. Testing on Multiple Machines
    5. 17. Testing Web Services with SoapUI
      1. Introduction
      2. An Introduction to SoapUI
        1. Web Service Testing
        2. Web Service Development
        3. When Is SoapUI Appropriate?
      3. Installing SoapUI
      4. Installing a Local Web Service
      5. Testing Web Services with SoapUI
      6. Load-Testing with SoapUI
      7. Running SoapUI from the Command Line
      8. Running SoapUI from Ant
      9. Running SoapUI from Maven
      10. Continuous Testing
      11. Conclusion
    6. 18. Profiling and Monitoring Java Applications Using the Sun JDK Tools
      1. The Sun JDK Profiling and Monitoring Tools
      2. Connecting To and Monitoring a Java Application with jConsole
      3. Monitoring a Remote Tomcat Application with jConsole
      4. Detecting and Identifying Memory Leaks with the JDK Tools
      5. Diagnosing Memory Leaks Using Heap Dumps, jmap, and jhat
      6. Detecting Deadlocks
    7. 19. Profiling Java Applications in Eclipse
      1. Profiling Applications from Within an IDE
      2. The Eclipse Test & Performance Tools Platform
      3. Installing TPTP
      4. TPTP and Java 6
      5. Basic Profiling with TPTP
      6. Studying Memory Use with the Basic Memory Analysis Results
      7. Analyzing Execution Time
      8. Displaying Coverage Statistics
      9. Using Filters to Refine Your Results
      10. Profiling a Web Application
      11. Conclusion
    8. 20. Testing Your User Interfaces
      1. Introduction
      2. Testing Your Web Application with Selenium
        1. Introduction
        2. Using the Selenium IDE
        3. Writing Selenium Test Scripts
          1. An introduction to Selenese
          2. Referring to objects on the web page
          3. Using variables
          4. Using assertions
        4. Running a Selenium Test Suite with Selenium Core
        5. Writing JUnit Tests with Selenium
        6. Using Selenium with Ant
        7. Using Selenium with Maven
      3. Testing Swing GUIs with FEST
        1. Introduction
        2. Testing GUIs Is Hard
        3. Introducing FEST
        4. Testing GUIs with FEST
        5. Following Windows with FEST
        6. Verifying Test Failures
        7. Testing Legacy Applications
        8. Tips for Writing Testable GUIs
      4. Conclusion
  10. VI. Quality Metrics Tools
    1. 21. Detecting and Enforcing Coding Standards with Checkstyle
      1. Using Checkstyle to Enforce Coding Standards
      2. Using Checkstyle in Eclipse
      3. Customizing Checkstyle Rules in Eclipse
      4. Customizing Checkstyle Rules Using the XML Configuration Files
      5. Customizing Checkstyle: Common Rules That You Can Do Without, and Some That You Could Use
      6. Defining Rules for Source Code Headers with Checkstyle
      7. Suppressing Checkstyle Tests
      8. Using Checkstyle with Ant
      9. Using Checkstyle with Maven
    2. 22. Preemptive Error Detection with PMD
      1. PMD and Static Code Analysis
      2. Using PMD in Eclipse
        1. Installing the PMD Plug-In
        2. Detecting and Displaying Errors
      3. Configuring PMD Rules in Eclipse
      4. More on the PMD Rulesets
      5. Writing Your Own PMD Ruleset
      6. Generating a PMD Report in Eclipse
      7. Suppressing PMD Rules
      8. Detecting Cut-and-Paste with CPD
      9. Using PMD in Ant
      10. Using PMD in Maven
    3. 23. Preemptive Error Detection with FindBugs
      1. FindBugs: A Specialized Bug Killer
      2. Using FindBugs in Eclipse
        1. Installing the FindBugs Plug-In
        2. Detecting and Displaying Errors
      3. Selectively Suppressing Rules with FindBug Filters
      4. Using FindBugs Annotations
      5. Using FindBugs in Ant
      6. Using FindBugs in Maven
      7. Conclusion
    4. 24. Inspecting the Results—Semiautomated Code Review with Jupiter
      1. Introducing Jupiter—A Code Review Tool for Eclipse
      2. Installing Jupiter in Eclipse
      3. Understanding the Jupiter Code Review Process
      4. Conducting Personal Code Reviews
      5. Configuration
      6. Setting Up Default Configuration Values
      7. Individual Reviews
      8. Team Review
      9. Rework Phase
      10. Jupiter Behind the Scenes
      11. Conclusion
    5. 25. Sharpen Your Focus with Mylyn
      1. Introduction to Mylyn
      2. Installing Mylyn
      3. Tracking Tasks and Issues
      4. Interacting with Task Repositories
      5. Focusing on a Task with Context Management
      6. Using the Eclipse Change Sets
      7. Sharing Context with Other Developers
      8. Conclusion
    6. 26. Monitoring Build Statistics
      1. Introduction
      2. QALab
        1. Using QALab in Ant
        2. Using QALab in Maven
      3. Source Code Management Metrics with StatSCM
      4. Statistics in Ant with StatSVN
        1. Installing StatSVN
        2. Extracting the Subversion Logfiles
        3. Generating the StatSVN Reports
  11. VII. Issue Management Tools
    1. 27. Bugzilla
      1. An Introduction to Bugzilla
      2. Installing Bugzilla
        1. System Prerequisites
        2. Installing the Bugzilla Application
        3. Installing the Perl Modules
        4. Installing the Bugzilla Application
        5. Configuring the Web Server
      3. Setting Up Your Bugzilla Environment
      4. Managing User Accounts
      5. Restricting Access Using User Groups
      6. Configuring a Product
      7. Tracking Progress with Milestones
      8. Managing Groups of Products with Classifications
      9. Searching for Bugs
      10. Creating a New Bug
      11. The Lifecycle of a Bugzilla Bug
      12. Scheduling Notifications (Whining)
      13. Customizing Fields in Bugzilla
      14. Conclusion
    2. 28. Trac—Lightweight Project Management
      1. An Introduction to Trac
      2. Installing Trac
      3. Setting Up a Trac Project
      4. Running Trac on the Standalone Server
      5. Setting Up Tracd As a Windows Service
      6. Installing Trac on an Apache Server
      7. Administrating the Trac Site
      8. Managing User Accounts
      9. Tailoring the Trac Web Site: Using the Wiki Function
      10. Using the Trac Ticket Management System
        1. Creating a New Ticket
        2. The Lifecycle of a Trac Ticket
      11. Updating Trac Issues from Subversion
      12. Customizing Trac Ticket Fields
      13. Setting Up Email Notifications
      14. Reporting Using Trac Queries and Reports
      15. Managing Progress with Trac Roadmaps and Timelines
        1. Trac Milestones
        2. The Timeline View
      16. Browsing the Source Code Repository
      17. Using RSS and ICalendar
      18. Customizing a Wiki Page with Python
      19. Conclusion
  12. VIII. Technical Documentation Tools
    1. 29. Team Communication with the Maven 2 Project Web Site
      1. The Maven 2 Project Web Site As a Communication Tool
      2. Setting Up a Maven Site Project
        1. Describing the Project
        2. Linking into the Issue Tracking System
        3. The Continuous Integration System
        4. The Project Team
        5. Mailing Lists
        6. The Source Repository
        7. Generating the Site
      3. Integrating Reports into Your Site
        1. Javadocs
        2. Unit Test Reports
        3. Test Coverage Reports
        4. Code Analysis Reports
        5. Change and Configuration Management
      4. Creating a Dedicated Maven Site Project
      5. Defining the Site Outline
      6. The Maven Site Generation Architecture
        1. Doxia
        2. APT
        3. FML
        4. XDoc
      7. Using Snippets
      8. Customizing the Look and Feel of Your Site
        1. Changing Skins
        2. Creating Your Own Style
        3. Velocity Manipulation
      9. Distributing Your Site
    2. 30. Automatically Generating Technical Documentation
      1. Introduction
      2. Visualizing a Database Structure with SchemaSpy
        1. Introduction
        2. An Overview of SchemaSpy
        3. Installing SchemaSpy
        4. Using SchemaSpy
        5. Using SchemaSpy in Ant
        6. Using SchemaSpy in Maven
      3. Generating Source Code Documentation with Doxygen
        1. Introduction
        2. The Doxygen Reports
        3. Installing Doxygen
        4. Configuring Doxygen
        5. Running Doxygen from the Command Line
        6. Using Doxygen with Ant
        7. How to Make Your Java Classes Doxygen-Friendly
          1. Using the brief descriptions
          2. Lists
          3. Links and references
          4. Documenting packages
          5. Documenting the home page
      4. Embedding UML Diagrams in Your Javadoc with UmlGraph
        1. Using UmlGraph in Ant
        2. Using UmlGraph in Maven
      5. Conclusion
  13. Bibliography
  14. Index
  15. About the Author
  16. Colophon
  17. Copyright

Product information

  • Title: Java Power Tools
  • Author(s): John Ferguson Smart
  • Release date: April 2008
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781491954546