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
- Good, if one favors declarative over imperative
- 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
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