Meister Going Beyond Maven A technical whitepaper comparing OpenMake Meister and Apache Maven OpenMake Software 312.440.9545 800.359.8049 Winners of the 2009 Jolt Award
Introduction There are many similarities between OpenMake Meister and Apache Maven, most importantly the original purpose for their creation - simplifying the build process. With this common goal, the developers of both Apache Maven and OpenMake Meister came to similar conclusions on how to accomplish a more simplified build. At the core of both solutions is the implementation of standard templates, called Archetypes in Maven and Build Services in Meister. It is through this template concept that both products deliver improved build processes. Templates drastically reduce the need for developers to code build scripts from scratch for each new project. In addition, by employing a template methodology build standards can be enforced, making it much easier for anyone referencing that build script to understand what it does. Key Differences This section explores how Meister and Maven differ with respect to build script management, dependency analysis and workflow support. Script Management Even though Maven and Meister share a common goal, there are many differences between the two solutions. The biggest difference between the two tools is the way in which the template concept is leveraged. With Maven, you use Archetypes to initially create your Maven POM files, typically inside of an IDE such as IntelliJ or Eclipse. Once you generate that initial script, you edit it directly as your project changes. The ease of editing depends largely on which IDE is being used - IntelliJ for example has a fairly sophisticated editor compared to Eclipse but script maintenance is manual in any case, even though script creation is automated based on the Archetype. With OpenMake Meister, the on-going maintenance of your project build script continues to be automated in Eclipse-base IDEs. You can execute a Meister build from inside of Eclipse, like Maven, but Meister goes one step further. Instead of manually editing your Meister build script, Meister does it for you by synchronizing the IDE project file with the build script before the build occurs. Meister leverages its Build Service templates beyond the first version of the build by changing the build script in response to both source code changes and Build Service changes. By providing script automation throughout the project lifecycle, Meister delivers a consistent, repeatable and standardized build process. 2
Dependency Management Dependency Management is a critical feature of any build solution. Apache Maven provides a level of dependency scopes for the management of compilers and runtime libraries, an important feature. However, Meister performs a much lower level of dependency discovery by scanning source code and interrogating IDE project files. It is this level of dependency management that allows Meister to deliver accelerated build processing (build avoidance and parallelization) and transparent build audit reporting. Meister build audit and dependency analysis reports clearly document every artifact used in a build. The Meister build audit system will report on whether an artifact was pulled from SCM versus found on a shared network drive, for example, and on dependencies that were discovered via the code scanning process. In addition, Meister uses this information to provide impact analysis data for making good development decisions and determining if a binary is ready to run in a production environment. Workflow Support OpenMake Meister includes a full Workflow engine, with distributed remote servers for workflow load balancing, and a built-in continuous integration server. Maven however provides no workflow management or continuous integration solution, and so must be implemented along with tools such as Hudson, Cruise Control, or a commercial workflow product if these are required capabilities. This increases the complexity of the final Maven solution compared to the Meister approach of including these features in a single integrated solution. Feature Comparison The table below compares the detailed features of Meister and Maven. Beyond these functional comparisons, it is important to note that Apache Maven was written primarily to support smallscale Java development environments. OpenMake Meister was designed to support multiple languages and operating systems, and to scale naturally to very large enterprise build and development environments. Feature Description Templates Modular design and reuse Meister Maven Use of templates for supporting Best Practices Centralized Management of Compile Options Build can be standardized to a custom structure Dynamically maintains the build lifecycle based on the template. (Automatically re-generates as coding base changes) Out of the box solution for Java build automation Higher level of reusability between Java builds Easy ramp up for new Java developers Calls Ant Tasks and Plug-ins 3
Dependency Management Meister Maven Automatic Source-to-Dependency Management (.java to.java,.jar to.java, etc.) Transitive Dependency Management Compile Scope Provided Scope Runtime Scope Test Scope System Scope Import Scope Audit Trail of all Source and Compile Dependencies Impact Analysis of Source and Dependency Hierarchy Incremental build based on only changed source and dependencies Use of Approved Source and Compile Dependencies Only Automatic Download of Runtime Dependencies from Internet Multiple Source and Compile Dependency Paths for same Project Deploy Meister Maven Local Deployment of Shared Artifacts Remote Deployment of Shared Artifacts Support Meister Maven Online and phone technical support Professional Services and Training Centralized Reporting Meister Maven Aggregation of Report Output to a single repository for all Platforms Real-Time Monitoring of Build Results Build Acceleration Meister Maven Parallelized Builds Build Avoidance (Incremental Build processing) Workflow Management (Build Lifecycle) Meister Maven Standard Application Lifecycle Customizable Application Lifecycle Reusable Application Lifecycle Distributed Remote Agents Scheduling Continuous Integration Meister Maven Built-in Continuous Integration Server Check-in Changes monitored on Quiet Period Monitor of SCM repository for changes Configurable CI processing based on Project 4
Distributed development Meister Maven Supports geographically distributed development Centralized Build metadata repository Eclipse Support Meister Maven Automatic generation of build scripts from Eclipse project data Automatic maintenance of build scripts from Eclipse project data Generation of Eclipse project from static build script Conclusion The core benefit of both Meister and Maven is the use of a template methodology to deliver simplified, standardized and consistent builds. Maven is appropriate for smaller java development teams where the application is not changing frequently and where detailed audit trails and dependency analysis are not required. Meister automates the template approach and applies it to the generated build script throughout the software development process from creation through maintenance, whereas Maven focuses on one-time script generation from archetypes. OpenMake Meister enables large geographically distributed organizations to accelerate application development on rapidly changing code bases, across multiple languages and operating systems. Further, its audit capabilities clearly document the origin of all code and libraries appearing in the production executables. Though Meister and Maven share a similar philosophy on improving the software build process, Meister provides substantial additional benefits through full lifecycle build automation and workflow processing. About OpenMake Software Through build and workflow automation, OpenMake Software releases the full potential of software development providing a 100% complete build management solution. For more information about OpenMake Meister or about OpenMake Software go to or contact us at 312.440.9545, toll free 800.359.8049. You can email us at request-info@openmakesoftware.com. 5