Use Maven as build tool¶
Context and Problem Statement¶
Which build tool should be used?
Considered Options¶
Decision Outcome¶
Chosen option: “Maven”, because
None of Gradle’s customizability and the overhead in setup that comes with that is required.
The structure the comes with Maven makes the build files easier to understand compared to ANT.
Pros and Cons of the Options¶
Maven¶
Good, because most of Eclipse projects use Maven for building.
Good, because there is a plugin for almost everything
Good, because it has good integration with third party tools
Good, because it has robust performance
Good, because it has a high popularity
Bad, because getting a dependency list is not straight forward
Bad, because it based on a fixed and linear model of phases
Bad, because it is hard to customize
Bad, because it needs plugins for everything
Bad, because it is verbose leading to huge build files
Gradle¶
Good, because its build scripts are short
Good, because it follows the convention over configuration approach
Good, because it offers a graph-based task dependencies
Good, because it is easy to customize
Good, because it offers custom dependency scopes
Good, because it has good community support
Good, because its performance can be 100 times more than maven’s performance.
Bad, because not that many plugins are available/maintained yet
Bad, because it lacks a wide variety of application server integrations
Bad, because it has a medium popularity
Bad, because it allows custom build scripts which need to be debugged
Ant¶
Good, because it offers a lot of control over the build process
Good, because it has an agile dependency manager
Good, because it has a low learning curve
Bad, because build scripts can quickly become huge
Bad, because everything has to be written from scratch
Bad, because no conventions are enforced which can make it hard to understand someone else’s build script
Bad, because it has nearly no community support
Bad, because it has a low popularity
Bad, because it offers too much freedom
Links¶
License¶
Copyright (c) 2018 Contributors to the Eclipse Foundation
See the NOTICE file(s) distributed with this work for additional information regarding copyright ownership.
This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0, or the Apache Software License 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0.
SPDX-License-Identifier: EPL-2.0 OR Apache-2.0