Maven vs Ant

Maven vs Ant

Ant is a build tool, Maven is a build system. Compared to Ant, maven has the following advantages:

• Convention over Configuration, convention is at the heart of Maven, maven defines project object model, a common and standard project directory structure, and advocates best practices, so every maven-enabled project is same, so developers can quickly understand project and reuse his konwledage about maven.

In stead, using Ant, you have to tell Ant exactly where to find the source and where to put the output.

• Maven is declarative. All you have to do is to create a pom.xml file and put your source in the default directory. Maven took care of the rest, whereas Ant is procedural, you have to tell Ant exactly what to do and when to do it. You had to tell it to compile, then copy, and then compress.

• Maven has a lifecycle, for example, mvn install command tells Maven to execute a series of sequence steps until it reached the lifecycle. As a side-effect of this journey through the lifecycle, Maven executed a number of default plugin goals which did things like compile and create a JAR.

Ant doesn't have a lifecycle; you had to define goals and goal dependencies. You had to attach a sequence of tasks to each goal manually.

• An efficient set of Maven POMs in a project which adheres to Maven's assumed conventions has surprisingly little XML compared to the Ant alternative.

• The decision to use Maven or Ant is not exclusive, we can still call ant task in maven, Maven also provide plugin - mvn ant:ant to create an Ant build file from Maven pom.xml.

• Setting up a project is really wasy and fast, we can use archetype:create command to generate standard maven-enabled project, it would also generate pom.xml file, we don't need to write complicated build.xml file.

• Maven's Dependency management, maven has several central repositories to store most all java third-party libraries, maven defines very easy way to declare project's libraries, this can reduce the size of source distributions, because we don't need package these third-party libraries, as they can be pulled from a central location.

• Maven provides a lot of goals, and Maven plugins to do 99% of project build work, such as mvn compile, test, package, install, mvn site etc, build process is standardized for all projects. Also maven can also be customized.

IDE support, all mainstream java IDEs provides excellent maven support.

Resources:

http://maven.apache.org/benefits-of-using-maven.html

Maven: The Definitive Guide


Post a Comment

Labels

Java (159) Lucene-Solr (112) Interview (61) All (58) J2SE (53) Algorithm (45) Soft Skills (38) Eclipse (33) Code Example (31) Linux (25) JavaScript (23) Spring (22) Windows (22) Web Development (20) Tools (19) Nutch2 (18) Bugs (17) Debug (16) Defects (14) Text Mining (14) J2EE (13) Network (13) Troubleshooting (13) PowerShell (11) Chrome (9) Design (9) How to (9) Learning code (9) Performance (9) Problem Solving (9) UIMA (9) html (9) Http Client (8) Maven (8) Security (8) bat (8) blogger (8) Big Data (7) Continuous Integration (7) Google (7) Guava (7) JSON (7) Shell (7) ANT (6) Coding Skills (6) Database (6) Lesson Learned (6) Programmer Skills (6) Scala (6) Tips (6) css (6) Algorithm Series (5) Cache (5) Dynamic Languages (5) IDE (5) System Design (5) adsense (5) xml (5) AIX (4) Code Quality (4) GAE (4) Git (4) Good Programming Practices (4) Jackson (4) Memory Usage (4) Miscs (4) OpenNLP (4) Project Managment (4) Spark (4) Testing (4) ads (4) regular-expression (4) Android (3) Apache Spark (3) Become a Better You (3) Concurrency (3) Eclipse RCP (3) English (3) Happy Hacking (3) IBM (3) J2SE Knowledge Series (3) JAX-RS (3) Jetty (3) Restful Web Service (3) Script (3) regex (3) seo (3) .Net (2) Android Studio (2) Apache (2) Apache Procrun (2) Architecture (2) Batch (2) Bit Operation (2) Build (2) Building Scalable Web Sites (2) C# (2) C/C++ (2) CSV (2) Career (2) Cassandra (2) Distributed (2) Fiddler (2) Firefox (2) Google Drive (2) Gson (2) How to Interview (2) Html Parser (2) Http (2) Image Tools (2) JQuery (2) Jersey (2) LDAP (2) Life (2) Logging (2) Python (2) Software Issues (2) Storage (2) Text Search (2) xml parser (2) AOP (1) Application Design (1) AspectJ (1) Chrome DevTools (1) Cloud (1) Codility (1) Data Mining (1) Data Structure (1) ExceptionUtils (1) Exif (1) Feature Request (1) FindBugs (1) Greasemonkey (1) HTML5 (1) Httpd (1) I18N (1) IBM Java Thread Dump Analyzer (1) JDK Source Code (1) JDK8 (1) JMX (1) Lazy Developer (1) Mac (1) Machine Learning (1) Mobile (1) My Plan for 2010 (1) Netbeans (1) Notes (1) Operating System (1) Perl (1) Problems (1) Product Architecture (1) Programming Life (1) Quality (1) Redhat (1) Redis (1) Review (1) RxJava (1) Solutions logs (1) Team Management (1) Thread Dump Analyzer (1) Visualization (1) boilerpipe (1) htm (1) ongoing (1) procrun (1) rss (1)

Popular Posts