Stian Soiland-Reyes edited Reproducibility_in_software_development_Apache__.md  almost 9 years ago

Commit id: fd002911e03f0f88247001d49a1bd1b7b8dfb8ad

deletions | additions      

       

## Apache Maven  [Apache Maven](http://maven.apache.org/)\cite{Varanasi_2014}  is a build and dependency management system that is widely popular for the Java platform. While newer build systems like [Apache Ivy](https://ant.apache.org/ivy/) and [Gradle](http://gradle.org/) have evolved to counter Maven's apparent [verbosity and lack of flexibility](http://stackoverflow.com/questions/1077477/why-do-so-few-people-use-maven-are-there-alternative-tools), they still derive their dependency resolution and metadata aspects from Maven. A software project that is built using Maven defines its compile settings and metadata in a `pom.xml` file.   Maven has an extensive list of official and third-party [plugins](https://maven.apache.org/plugins/) to cater for customized build requirement, but also strongly encourage a fixed directory structure (e.g. main source code in `src/main/java` and test resources in `src/test/resources`) and [convention over configuration](https://en.wikipedia.org/wiki/Convention_over_configuration) \cite{Lazar_2009}. The metadata can contain information about authors, contact details and source code repositories, which will be bundled with the produced binaries for provenance purposes, but can also be used by the [Maven Site plugin](https://maven.apache.org/plugins/maven-site-plugin/) to generate a website for the project.