Java入门到精通——工具篇之Maven概述
为接手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 执行一系列的有序的步骤,直到到达你指定的生命周期。
相关文章
- Jenkins和maven自动化构建java程序
- maven:用appassembler-maven-plugin打包含有自定义目录的JAVA程序
- java中DatagramSocket连续发送多个数据报包时产生丢包现象解决方案
- java设计模式--行为型模式--状态模式
- Upgrading to Java 8——第二章 Method References(方法引用)
- Java.lang.Character类
- Java里多个Map的性能比较(TreeMap、HashMap、ConcurrentSkipListMap)
- 关于有时候导入maven项目时候报错(有红色叹号,类中导入的包提示"the import java.util cannot be resolve,")
- Java多线程:线程状态以及wait(), notify(), notifyAll()
- [Effective Java]第四章 类和接口
- 使用maven命令创建java项目
- linux java 和jmeter 环境变量配置文件笔记(原)
- Java入门到精通——工具篇之Maven概述
- java报错 pom.xml第一行报"org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project...
- Java消息队列三道面试题详解!
- 由Java程序注册机联想到商业版程序的加密方法
- 将Java项目从maven迁移到gradle
- IntelliJ IDEA + Maven创建Java Web项目
- Java类的实例化的初始化过程
- json转java对象 和 java对象转json 的方法 (一个类renturn的数据 映射到另外一个类接收) ---阿里巴巴的库
- 【maven下载安装及配置步骤,配置maven时 “The JAVA_HOME environment variable is not defined correctly“ 报错解决。。】
- Junit测试报错java.lang.NullPointerException空指针,以及mybatis-plus报空指针异常
- java-maven
- 【java web篇】项目管理构建工具Maven简介以及安装配置
- 对比Java,Kotlin的优点和缺点
- 已解决Error injecting constructor, java.lang.NoSuchMethodError: org.apache.maven.model
- 已解决maven中出现java.lang.ClassNotFoundException: org.apache.http.entity.mime.content.ContentBody异常的正确解决方
- Java 与 Scala 使用Maven混合编译打包
- (IDEA2020 在使用maven时遇到servlet依赖包错误,Error:(6, 37) java: 程序包org.apache.ibatis.annotations不存在)
- java Random.nextInt()方法
- 大数据必学Java基础(一百一十九):Maven仓库与JDK的配置
- maven报错:com.qiniu:qiniu-java-sdk/maven-metadata.xmlfailed to transfer from http://0.0.0.0/
- java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind 处理方法