Apache Ant和Apache Maven的区别 ant与maven的区别

\u4e3a\u4ec0\u4e48\u642d\u5efa\u73af\u5883\u4e00\u5b9a\u8981maven\uff1fmaven\u548cant \u7684\u533a\u522b?

eclipse \u4e0d\u4e00\u5b9a\u8981\u7528maven\u642d\u5efa\uff0c\u4f60\u53ef\u4ee5\u76f4\u63a5\u5efa\u4e00\u4e2ajava project\uff0c\u4f46\u662f\u8fd9\u6837\u7684\u8bdd \u4f60\u8981\u7528\u5230\u7684\u5305\u5c31\u9700\u8981\u624b\u52a8\u6dfb\u52a0\uff0c\u5de5\u7a0b\u591a\u4e0d\u65b9\u4fbf\u7ba1\u7406\uff0cmaven\u5de5\u7a0b\u7684\u4f5c\u7528\u5c31\u5728\u4e8e\u4f60\u5efa\u4e00\u4e2a jar\u5305\u7684\u5e93\uff0c\u5e93\u91cc\u9762\u653e\u4e86\u5f88\u591a\u57fa\u7840\u7684\u5305 \u6bd4\u5982jdbc hibernamte\uff0c\u8981\u7528\u5230\u53ea\u9700\u8981\u5728pom\u3002xml\u4e2d\u6dfb\u52a0\u914d\u7f6e\u4ed6\u5c31\u4f1a\u4ece\u5e93\u4e2d\u52a0\u8f7d\u5230\u4f60\u7684\u5de5\u7a0b\uff0c\u4f60\u7684\u5de5\u7a0b \u6253\u6210\u7684jar\u5305\u4e5f\u53ef\u4ee5\u653e\u5230\u5e93\u4e2d \u7ed9\u5176\u4ed6\u5de5\u7a0b\u7528\u3002\u603b\u4e4bmaven\u5c31\u662f\u4e3a\u4e86\u65b9\u4fbf\u5de5\u7a0b\u6216\u8005jar\u7684\u4f9d\u8d56\u5b58\u5728\u7684
\u53e6\u5916\u4e00\u4e2a\u91cd\u8981\u4f5c\u7528\u5c31\u662f\u8fd9\u4e2a\u63d2\u4ef6\u53ef\u4ee5\u5c06\u4f60\u7684\u5de5\u7a0b\u6253\u5305\u6210jar\u5305\uff0c\u6216\u8005war\u5305\uff0c\u4e5f\u5c31\u662f\u5c06java\u6587\u4ef6\u53d8\u6210\u53ef\u6267\u884c\u7684class\u6587\u4ef6\u7ed3\u6784\uff0c\u81f3\u4e8eant\u63d2\u4ef6\u4e86\u89e3\u4e0d\u591a\uff0c\u4e0d\u8fc7\u4e5f\u80fd\u7528\u6765\u6253\u5305\u3002

\u5404\u6709\u957f\u5904
maven\u53ef\u4ee5\u7ba1\u7406\u6574\u4e2a\u9879\u76ee\u58f0\u660e\u5468\u671f\uff0c\u5f88\u9002\u4e8e\u7ba1\u7406\u5927\u578b\u9879\u76ee\u3002an\u5219\u4e3b\u8981\u5904\u7406\u7f16\u8bd1\u90e8\u7f72\u7684\u95ee\u9898\u3002maven\u5d07\u5c1a\u7ea6\u5b9a\u5927\u4e8e\u914d\u7f6e\uff0c\u56e0\u6b64\u914d\u7f6e\u6587\u4ef6\u5f88\u7b80\u5355\uff0cant\u5219\u4e3b\u8981\u8003\u914d\u7f6e\uff0c\u4f46\u662fant\u7684\u6587\u4ef6\u64cd\u4f5c\u6211\u89c9\u5f97\u6bd4maven\u5f3a\u3002
maven\u6709\u5927\u91cf\u63d2\u4ef6\u53ef\u4ee5\u7528\uff0c\u57fa\u672c\u4e0a\u53ea\u6709\u4f60\u60f3\u4e0d\u5230\u7684\u6ca1\u6709\u4f60\u627e\u4e0d\u5230\u7684\u3002

Apache Ant

1、Ant 是程序化的,你必须明确的告诉 Ant 做什么,什么时候做。你必须告诉它去编译,然后复制,然后压缩。
2、Ant 没有生命周期,你必须定义目标和目标之间的依赖。你必须手工为每个目标附上一个任务序列。

Apache Maven

1、Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里。它把字节码放到 target/classes,然后在 target生成一个 JAR 文件。
2、Maven 是声明式的。你需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。Maven 会帮你处理其它的事情。
3、Maven 有一个生命周期,当你运行 mvn install的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。

Maven 以插件的形式为一些一般的项目任务提供了内置的智能。如果你想要编写运行单元测试,你需要做的只是编写测试然后放到/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/src/test/java,添加一个对于 TestNG 或者 JUnit 的测试范围依赖,然后运行 mvn test。

如果你想要部署一个web 应用而非 JAR ,你需要做的是改变你的项目类型为 war ,然后把你文档根目录置为 /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/src/main/webapp。当然,你可以用 Ant 做这些事情,但是你将需要从零开始写这些指令。使用 Ant ,你首先需要确定 JUnit JAR 文件应该放在哪里,然后你需要创建一个包含这个 JUnit JAR 文件的 classpath ,然后告诉 Ant 它应该从哪里去找测试源代码,编写一个目标来编译测试源代码为字节码,使用 JUnit 来执行单元测试。没有诸如 antlibs 和 lvy 等技术的支持(即使有了这些支持技术),Ant 给人感觉是自定义的程序化构建。

项目中一组高效的坚持约定的 Maven POM ,相对于 Ant 的配置文件,只有很少的 XML 。

Maven 的另一个优点是它依靠广泛公用的 Maven 插件。所有人使用 Maven Surefire 插件来运行单元测试,如果有人添加了一些针对新的测试框架的支持,你可以仅仅通过在你项目的 POM 中升级某个特定插件的版本来获得新的功能。

使用 Maven 还是 Ant 的决定不是非此即彼的,Ant 在复杂的构建中还有它的位置。如果你目前的构建包含一些高度自定义的过程,或者你已经写了一些 Ant 脚本通过一种明确的方法完成一个明确的过程,而这种过程不适合 Maven 标准,你仍然可以在Maven 中用这些脚本。作为一个 Maven 的核心插件, Ant 还是可用的。自定义的插件可以用 Ant 来实现,Maven 项目可以配置成在生命周期中运行 Ant 的脚本。

maven和ant的区别在于关注点不同,maven关注于项目本身,仅是依赖管理、项目生命周期管理,对于项目以外的文件复制、创建文件夹、执行系统命令、执行java命令、多个任务之间的依赖管理等力不从心,但ant提供了159个常用任务,对于项目以外的文件复制、创建文件夹、执行系统命令、执行java命令、多个任务之间的依赖管理非常有用。详情参考这篇文章

使用ant调用maven命令,写的非常详细



本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网