Team Maven


Published on

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Team Maven

    1. 1. Red Review Team Maven
    2. 2. Agenda <ul><li>Objectives/Goals of Project </li></ul><ul><li>Tools that were Considered </li></ul><ul><li>Overview of Maven </li></ul><ul><li>What We Did </li></ul><ul><li>Demonstration – Lucene Build </li></ul><ul><li>Coding Standards & Check-Style </li></ul><ul><li>Tool Evaluation/Lessons Learned </li></ul><ul><li>Future Projects/Extension of Work </li></ul>
    3. 3. Project Goals <ul><li>Evaluate Development Tools </li></ul><ul><li>Specifically Investigate tools for: </li></ul><ul><ul><li>Product and Release Management </li></ul></ul><ul><ul><li>Build Management </li></ul></ul><ul><ul><li>Automation </li></ul></ul><ul><li>Emphasis on tools for: </li></ul><ul><ul><li>Developer Communication </li></ul></ul><ul><ul><li>Tracking Current State of a Project </li></ul></ul>
    4. 4. Tool Candidates <ul><li>Gforge : collaborative software development system </li></ul><ul><li>Maven : software project management and comprehension tool </li></ul><ul><li>Initially Investigated Both Tools </li></ul><ul><ul><li>GForge dropped due to difficulties with installation and documentation </li></ul></ul><ul><ul><li>Maven selected to narrow project scope and coincide with team interest </li></ul></ul>
    5. 5. Maven in Development
    6. 6. Maven Overview <ul><li>Maven is a project build and analysis tool for the java environment. </li></ul><ul><li>Stated Goals of Maven Project: </li></ul><ul><ul><li>Make the build process easy </li></ul></ul><ul><ul><li>Provide a uniform build system </li></ul></ul><ul><ul><li>Provide quality project information </li></ul></ul><ul><ul><li>Provide guidelines for best practices </li></ul></ul><ul><ul><li>Allow transparent migration to new features </li></ul></ul><ul><li>Maven is driven by the Project Object Model (POM) </li></ul>
    7. 7. Maven Overview (POM) <ul><li>The POM Describes: </li></ul><ul><ul><li>General Project Attributes </li></ul></ul><ul><ul><li>Lists Developers & Contributors </li></ul></ul><ul><ul><li>SCM location Information </li></ul></ul><ul><ul><li>External Dependencies </li></ul></ul><ul><ul><li>Project Layout/Organization </li></ul></ul><ul><ul><li>Testing Information </li></ul></ul><ul><ul><li>Site Distribution & Packaging information </li></ul></ul><ul><ul><li>Lists Reports to Generate </li></ul></ul>
    8. 8. Maven Features/Functions <ul><li>Manage External Dependencies </li></ul><ul><li>Retrieve Source from SCM </li></ul><ul><li>Build Artifacts </li></ul><ul><li>Run Tests </li></ul><ul><li>Package Artifacts (jar,war,zip,tar…) </li></ul><ul><li>Generate Project Reports </li></ul><ul><li>Create Website of Project Info </li></ul><ul><li>Deploy Website and Distributions </li></ul><ul><li>Extensible via Plugins </li></ul>
    9. 10. What We Did <ul><li>Installed Maven in OMSE sandbox </li></ul><ul><li>Installed Subversion </li></ul><ul><li>Researched Maven’s features </li></ul><ul><li>Chose a non-Maven open source project for evaluation: Lucene </li></ul><ul><li>Wrote detailed “Getting Started” guide </li></ul><ul><li>Configured build process for Lucene </li></ul><ul><li>Experimented with project configurations </li></ul><ul><li>Researched and configured reports </li></ul>
    10. 11. What We Did (cont) <ul><li>Created sample custom plugin </li></ul><ul><li>Researched checkstyle </li></ul><ul><li>Evaluated Eclipse plugin </li></ul><ul><li>Researched site customization </li></ul>
    11. 12. Lucene Build Demonstration <ul><li>Build process not that interesting </li></ul><ul><ul><li>Maven clean; Maven site:deploy </li></ul></ul><ul><ul><li>Build is fast, report generation is not always </li></ul></ul><ul><li>Results of the build process are interesting </li></ul><ul><ul><li>Packaged artifacts (jars, wars, etc) </li></ul></ul><ul><ul><li>Web site landing Page </li></ul></ul><ul><ul><li>Sample Reports </li></ul></ul><ul><ul><ul><li>SCM Reports </li></ul></ul></ul><ul><ul><ul><li>Code Analysis Reports </li></ul></ul></ul><ul><ul><ul><li>Testing Reports </li></ul></ul></ul>
    12. 13. Maven Generated Site
    13. 14. Maven Generated Reports
    14. 15. SCM Changelog Report
    15. 16. Maven PMD Report
    16. 17. Maven jcoverage Report
    17. 18. Coding Standards Overview <ul><li>Coding Standards Emphasis: </li></ul><ul><ul><li>Structure and Effectiveness of Development Team </li></ul></ul><ul><ul><li>Software Product Quality (and Longevity) </li></ul></ul><ul><li>Reasons Why Standards are Important </li></ul><ul><ul><li>Support/Reinforce Design and Coding Techniques </li></ul></ul><ul><ul><li>Applications are Rarely Maintained by Author </li></ul></ul><ul><ul><li>Standards Help Slow Application Decay (80% of Software Cost in Maintenance) </li></ul></ul>
    18. 19. Coding Standards & Maven <ul><li>Maven Provides a Plug-In Architecture for 3 rd Party Applications </li></ul><ul><li>Check Style Description </li></ul><ul><ul><li>Development Tool for Java Programmers </li></ul></ul><ul><ul><li>Flexible Enough to Support Any Standard </li></ul></ul><ul><ul><li>Checks Coding Style and Coding Structure </li></ul></ul><ul><ul><li>Optional Checks Include J2EE Requirements </li></ul></ul>
    19. 21. Lessons Learned <ul><li>Gforge can be hard to configure. </li></ul><ul><li>Maven is a powerful tool (in the right hands). </li></ul><ul><li>Navigating the documentation is initially challenging, however, once you understand how it is organized it becomes easier to follow. </li></ul><ul><li>Learn by doing the best approach. </li></ul><ul><li>Open source projects are dynamic, keeping up can be difficult. </li></ul>
    20. 22. Lessons Learned (cont) <ul><li>Maven provides consistent build process </li></ul><ul><li>Common look/feel to project web sites </li></ul><ul><li>Simplifies getting new developers up to speed ( maven jar:jar) </li></ul><ul><li>Initial learning curve steep, particularly if no previous experience with Ant </li></ul><ul><li>Documentation is improving </li></ul>
    21. 23. Future Work <ul><li>Dive into Maven 2. </li></ul><ul><li>Look into creating an OMSE repository for OMSE specific plugins and JARS. </li></ul><ul><li>Document a “Best Practice” procedure for using Maven in an academic setting. (e.g. software projects associated with courses.) </li></ul>