SCMWise.com

Maven


Definition

From the Home page on Apache:

"Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), it can manage a project's build, reporting and documentation from a central piece of information."

Not sure why so many of these tools go out of their way to be so ambiguous about what the tool specifically does, but...

Basically, this is a standard way to build a java based project.

It provides a clear definition of what makes up a project.

It also publishes the project information.

It shares JARs across several projects.

Maven Home



Objectives

  • Simplifying the build process
  • Provide uniform builds
  • Improved project information and reporting
  • Easy to follow best practices
  • Easy upgrade path


Benefits
  • Build Automation
  • Providing Build Best Practices
  • Provide Relevant Project Information
  • Enforces Technical Standards
  • Scalability


Benefits

This Jakarta project was created to simplify the build process of their Turbine project.

Most Jakarta projects were using their own ant build files and processes.

It can be used to build and deploy any java-based project.


Maven Help

Maven Help Screen


System Requirements

JDK 1.4 or above (this is to execute Apache-Maven - it still allows you to build against 1.3 and prior JDK's)
Memory No minimum requirement
Disk No minimum requirement. Approximately 100MB will be used for your local repository, however this will vary depending on usage and can be removed and redownloaded at any time.
Operating System No minimum requirement. On Windows, Windows NT and above or Cygwin is required for the startup scripts. Tested on Windows XP, Fedora Core and Mac OS X.


Maven Benefits

Simple project setup that follows best practices - get a new project or module started in seconds
Consistent usage across all projects means no ramp up time for new developers coming onto a project
Superior dependency management including automatic updating, dependency closures (also known as transitive dependencies)
Able to easily work with multiple projects at the same time
A large and growing repository of libraries and metadata to use out of the box, and arrangements in place with the largest Open Source projects for real-time availability of their latest releases
Extensible, with the ability to easily write plugins in Java or scripting languages
Instant access to new features with little or no extra configuration
Ant tasks for dependency management and deployment outside of Maven
Model based builds: Maven is able to build any number of projects into predefined output types such as a JAR, WAR, or distribution based on metadata about the project, without the need to do any scripting in most cases.
Coherent site of project information: Using the same metadata as for the build process, Maven is able to generate a web site or PDF including any documentation you care to add, and adds to that standard reports about the state of development of the project. Examples of this information can be seen at the bottom of the left-hand navigation of this site under the "Project Information" and "Project Reports" submenus.
Release management and distribution publication: Without much additional configuration, Maven will integrate with your source control system such as CVS and manage the release of a project based on a certain tag. It can also publish this to a distribution location for use by other projects. Maven is able to publish individual outputs such as a JAR, an archive including other dependencies and documentation, or as a source distribution.
Dependency management: Maven encourages the use of a central repository of JARs and other dependencies. Maven comes with a mechanism that your project's clients can use to download any JARs required for building your project from a central JAR repository much like Perl's CPAN. This allows users of Maven to reuse JARs across projects and encourages communication between projects to ensure that backward compatibility issues are dealt with. We are collaborating with the folks at Ibiblio who have graciously allowed the central repository to live on their servers.


Planned Environment

O/S Solaris 10
Server Sun T2000 4 cores, 8 threads per core(32 concurrent threads)
RAM 32GB
JDK 1.6


Software Configuration Management Tools Table of Contents

Software Configuration Management Tools Software Configuration Management Tools are the tools and utilities used in administering source code, building software, install packaging, defect tracking, change management and managing software configurations.

SCM Tools SCM Tools is a list of the more popularly used Software Configuration Management Tools. The plan is compile an exhaustive list of tools and rate them according to their usability.

SCM Tool Reviews SCM Tool Reviews are a place to read reviews of software configuration management tools. Share your experiences with SCM tools. These reviews can benefits others who are searching for information.

Software Build Tools Software Build Tools is a collection of tools used to create automated software builds. This list is growing and the functionality of the tools is expanding.

Software Build Tool Reviews Software Build Tool Reviews is a place to come read reviews of software build tools. If you script software build tools, please share your experience with others.

Software Installation Tools Software Installation Tools is a collection of Install Packaging tools. These tools are used in simplifying and automating the installation or deployment of the application.

Software Installation Tool Reviews Software Installation Tools is a collection of Install Packaging tools. These tools are used in simplifying and automating the installation or deployment of the application.

Software Tracking Tools Software Tracking Tools are the tools and utilities used in tracking software changes, defects and software development progress.

CruiseControl CruiseControl is an open source tool setup specifically to perform continuous integration software builds. This page is high level overview of CC and its functionality and benefits. Software build tools like CC are an integral part of your Software Configuration Management System.

CruiseControl.Net CruiseControl.Net is an open source tool that facilitates the integration of software builds. This page is an overview of the CC.Net Tool and Process.

InstallShield Installer InstallShield Installer simplifies the process of creating reliable Windows Installers, MSI, packages and InstallScript installers for Window systems. InstallShield is the defacto standard for MSI installations.

Maven Maven is a tool that can now be used for building and managing any Java-based project.

Source Code Evaluation Source Code Evaluation -- In SCM, one of the most commonly asked questions is what SCM source code tools should I use. The answer is, it depends on your evaluation criteria. There are so many variables and considerations that go into the selection process. Now, the evaluation may be slightly different depending on your software development team and management requirements.

Subversion Subversion is the fastest growing SCM Source Control Tool. The goal of the SVN project was to build a source control tool that fixed many CVS limitations.

Team Foundation Server Microsoft's Visual Studio Team System 2008 Team Foundation Server is an integrated collaboration tool server for Visual Studio Team System. It combines software build management, software development process model, team portal, version control, work item tracking, and business intelligence into a unified server. TFS allows better team collaboration in an effort to ensure better quality software.

TFS Licensing TFS licensing can be very confusing. Even though Microsoft has published much about this topic, many have unanswered questions. This page hopes to answer some of these questions.

Wise Installer The Wise Installer simplifies application and patch deployments through automation of software packages.


Software Build Table of Contents

Software Build Build automation is the process of combining all the steps necessary to compile the source code into build artifacts into a one step process. This can include many different types of tasks depending on the technologies involved.

Agile Continuous Integration Agile Continuous Integration naturally supports the Agile Development process of small and frequent releases. Continuous Integration, CI, is the process of building your application on every new source code check-in. Although, considered a relatively new idea, the concept behind CI has been around for as long as development teams have been writing code.

Automated Builds Automated Build Process - Automating your software build process is a fundamental step in maturing your software development process. The only way to accurately predict build results, ensure build reproducibility and guarantee minimal development down time due to build issues is to fully automate the build process.

Build Automation Build Automation is the key to implementing a successful Agile development methodology. In its basic form The Build is the conversion of source code into binaries. However, there is much more to building software than just compiling code.

Continuous Integration Continuous Integration, CI, is the process of building your application on every new source code check in. Although, considered a relatively new idea, the concept behind CI has been around for as long as development teams have been writing code. CI is an integral part of Software Configuration Management, SCM.

CruiseControl CruiseControl is an open source tool setup specifically to perform continuous integration software builds. This page is high level overview of CC and its functionality and benefits. Software build tools like CC are an integral part of your Software Configuration Management System.

CruiseControl.Net CruiseControl.Net is an open source tool that facilitates the integration of software builds. This page is an overview of the CC.Net Tool and Process.

Maven Maven is a tool that can now be used for building and managing any Java-based project.

Software Build Best Practices Software Build Best Practices are the procedures and processes that ensure software build integrity, repeatability and reproducibility. Best Practices are practices and techniques that are the most effective way of ensuring repeatability of a process. Build Best Practices are an integral part of Software Configuration Management, SCM.



Salary Surveys

This is a collection of Salary Surveys from Professions closely surrounding Software Configuration Management


SCM Salaries

Add Your SCM Salary


Configuration Management Salaries

Add Your CM Salary


Project Manager Salaries

Add Your PM Salary


Webmaster Salaries

Add Your Web Salary




SCMWise Preferred Partner

SBI! 2.0


SCMWise Recommends

Site Build It!


XML RSS
What is this?
Add to My Yahoo!
Add to My MSN
Add to Google


© Copyright 2007 - 2010
Powered by Site Build It!
Page copy protected against web site content infringement by Copyscape SCMWise.com's Privacy Policy
ADD TO YOUR SOCIAL BOOKMARKS: add to BlinkBlink add to Del.icio.usDel.icio.us add to DiggDigg
add to FurlFurl add to GoogleGoogle add to SimpySimpy add to SpurlSpurl Bookmark at TechnoratiTechnorati add to YahooY! MyWeb