Java入门到精通——工具篇之Maven概述
来源:互联网 发布:带约束的最优化问题 编辑:程序博客网 时间:2024/06/06 17:45
为接手gxpt准备已经快一个月了从SSH2-->EJB-->环境搭建-->Maven的构建。下面就带领大家初始Maven
一、什么是Maven。
Maven是一个垮平台的项目管理工具,主要服务于Java平台的项目构建、依赖管理和项目信息管理。Maven是一个能够帮我们自动化构建过程,充清理、编译、测试到生成报告,再到打包和部署。我们不需要一遍又一遍的输入命令,这些工作Maven都为我们做好了。Maven最大化地消除了构建的重复。在Maven以前,十个项目可能有十种构建方式;有了Maven后所有项目的构建命令都是简单一直的,这极大地避免了不必要的学习成本。
综上所属,Maven作为一个构建工具,不仅能帮我们自动化构建,还能抽象构建过程,提供构建任务实现;它跨平台,对外提供了一致的操作接口。
二、为什么用Maven。
1、build逻辑可以被重用。在Ant中可能需要多次重复地写相同的语句,但由于POM的继承性,可以复用其它的POM文件中的语句。这样既可以写出清晰的build语句,又可以构造出层次关系良好的build工程。
2、不必关注build工作的实现细节。我们只需要使用一些build生命周期短语就可以达到我们的目标,而不必管Maven是如何做到这些的。如,只需要告诉Maven要安装(install),那么它自然就会验证,编译,打包,及安装。
3、Maven会自动加载工程依赖的artifact所依赖的其它artifact(Transitive Dependency),而不用显示的将这些artifact全部写到dependency中。
4、如果完全使用Maven的标准目录布局,那么可以极大地减少配置细节。
三、类似产品。
在Maven出现之前有Ant。在以前的学习中用过Ant,Ant也是一个和Maven类似的项目构建工具,遗憾的是Ant的项目管理工具不能满足绝大多数开发人员的需要。通过检查 Ant 构建文件,很难发现项目的相关性信息和其它信息。下面就是Maven与Ant的比较。
Apache Ant
• Ant 没有正式的约定如一个一般项目的目录结构,你必须明确的告诉 Ant 哪里去找源代码,哪里放置输出
• Ant 是程序化的,你必须明确的告诉 Ant 做什么,什么时候做。你必须告诉它去编译,然后复制,然后压缩。
• Ant 没有生命周期,你必须定义目标和目标之间的依赖。你必须手工为每个目标附上一个任务序列。
Apache Maven
• Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里。它把字节码放到 target/classes ,然后在 target 生成一个 JAR 文件。
• Maven 是声明式的。你需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。Maven 会帮你处理其它的事情。
• Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。
- Java入门到精通---工具篇之Maven概述
- Java入门到精通——工具篇之Maven概述
- Java从入门到精通之工具篇(转)
- Java从入门到精通之工具篇
- Java从入门到精通——工具篇SVN与Git比较
- maven入门到精通
- Android 开发从入门到精通 - Android 应用程序 — 概述
- Java从入门到精通——基础篇之Java基础概念
- Java从入门到精通——基础篇之Java 常用类
- Java从入门到精通——数据库篇之JAVA中的对Oracle数据库操作
- Java入门到精通——基础篇之Java集合
- Java入门到精通——开篇
- Java从入门到精通——高级篇之J2EE十三个规范
- Java从入门到精通——数据库篇之OJDBC版本区别
- Java从入门到精通——基础篇之Servlet与JSP的区别
- Java从入门到精通——基础篇之JSTL标签
- Java入门到精通——基础篇之面向对象
- Java入门到精通——基础篇之static关键字
- 走进windows编程的世界-----字符编码
- [LNAMP]Linux+Apache+Nginx+MySQL+PHP纯手动安装编译
- HTML框架以及CSS的初步知识
- JAVA基础_构造函数与函数重载
- 在Linux中安装FTP Server 配置FTP Server,JDK安装,Tomcat 安装,简易教程
- Java入门到精通——工具篇之Maven概述
- OpenGL函数-glClear
- 大学那些事(5)
- Pools.java
- Bret Victor: Learnable Programming
- Github clone submodule Permission denied
- pringmvc整合redis架构搭建实例
- Cannot create a server using the selected type
- Thread的run()与start()的差别