MAVEN BOOK 写道
Apache Ant
•Ant 没有正式的约定如一个一般项目的目录结构,你必须明确的告诉 Ant 哪里去找源代码,哪里放置输出。随着时间的推移,非正式的约定出现了,但是它们还没有在产品中模式化。
•Ant 是程序化的,你必须明确的告诉 Ant 做什么,什么时候做。你必须告诉它去编译,然后复制,然后压缩。
•Ant 没有生命周期,你必须定义目标和目标之间的依赖。你必须手工为每个目标附上一个任务序列。
Apache Maven
•Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里。它把字节码放到 target/classes ,然后在 target 生成一个 JAR 文件。
•Maven 是声明式的。你需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。Maven 会帮你处理其它的事情。
•Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
•Ant 没有正式的约定如一个一般项目的目录结构,你必须明确的告诉 Ant 哪里去找源代码,哪里放置输出。随着时间的推移,非正式的约定出现了,但是它们还没有在产品中模式化。
•Ant 是程序化的,你必须明确的告诉 Ant 做什么,什么时候做。你必须告诉它去编译,然后复制,然后压缩。
•Ant 没有生命周期,你必须定义目标和目标之间的依赖。你必须手工为每个目标附上一个任务序列。
Apache Maven
•Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里。它把字节码放到 target/classes ,然后在 target 生成一个 JAR 文件。
•Maven 是声明式的。你需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。Maven 会帮你处理其它的事情。
•Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
上面引用了简单,清晰的对比!在此,结合编程来说说自己的看法!
一:首先,如果把软件看成待处理的数据的话,那么ANT就是一个没有固定数据结构,那么自然对于其实现目标是程序化的,而反观MAVEN,MAVEN是个选好数据结构的,它就是我们的约定,所以在后面的目标实现来讲,MAVEN可以选择一套我们实践中高效的算法的!
二:MAVEN的最后实现是采用了我们习惯的面向对象,生命周期这些常用的概念,使得 理解与扩展得到了最大的重用性,而ANT同样也实现了目标,只是在一种杂乱,弱性的实现!这好比数据库语言和JAVA,同样可以完成诸如同样的关系,可是在表达和理解上是截然不同的!
三:最大限度的减少重复性,就是把委托,声明,约定,封装等等这些概念!比较ANT和MAVEN,MAVEN封装了比ANT多得多的东西,而且把谁该做的都分到各自的责任中,最后采用委托来实现联系成整体!
由此,可以借签给我们软件设计很多知识!