目录
Maven简介
1、我们工作时,除了编写源代码,每天有一部分时间都花在了编译、运行单元测试、生成文档、打包和部署上面,这就是构建。多次重复的做这种工作,浪费了大量程序员的时间,所以有人用软件使这一系列操作完全自动化,只需要一条命令,这些繁琐的操作会很快完成。
2、Maven编译工具是对ant工具的进一步改进,在make工具中,如果需要编译某些源文件,首先要安装编译器等工具。有时候需要不同版本的编译器,例如Java编译器在编译文件时需要各种依赖包的支持,如果把每个包都下载下来,在makefile中进行配置制定,当需要的包非常多时,很难管理。Maven构建工具能够自动下载项目依赖的第三方库,Maven通过坐标来准确的定位到每一个jar包,并自动帮我们下载。
3、Maven.与ant类似,也是构建(build)工具,它是如何调用各种不同的编译器连接器呢?使用Maven plugin(Maven:插件),Maven.项目对象模型POM(project object model),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven除了以程序构建能力为特色之外,还提供高级项目管理工具。
4、POM是Maven.项目中的文件,使用XML表示,名称为pom.xml。在Maven中,当构建project的时候,不仅仅是一堆包含代码的文件,还包含pom.xml配置文件,该文件包括project与开发者有关的、缺陷跟踪系统、组织与许可、项目的URL、项目依赖以及其他配置。
5、基于maven:构建编译时,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。由于Maven的默认构建规侧有较高的可重用性,所以常常用两三行Maven构建脚本就可以构建简单的项目。
Maven安装
#软件下载与安装
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
tar -xzf apache-maven-3.3.9-bin.tar.gz
mv apache-maven-3.3.9 /usr/maven/
#配置Maven环境变量
export MAVEN_HOME=/opt/maven
export JAVA_HOME=/opt/jdk1.8.0_181
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$MAVEN_HOME/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$MAVEN_HOME/bin:$PATH:$HOME/bin
Maven项目结构
Project
|--src(源码包)
|--main(正常的源码包)
|--java(.java文件的目录)
|--resources(资源文件的目录)
|--test(测试的源码包)
|--java
|--resources
|--target(class文件、报告等信息存储的地方)
|--pom.xml(maven工程的描述文件)
Maven常用命令
在本地仓库生成仓库的安装包可以供其他项目引用,同时打包后的文件存放到项目的 target 目录下。
对项目打包有三种打包方式,pom打包,jar包和war包。打包方式在pom.xml文件中进行指定。
pom工程一般是聚合工程,代表父工程,负责管理jar包的版本、maven插件的版本等,主要做统一的依赖管理。
jar包就是普通的打包方式,可以是pom工程的子工程。
war包的都是web工程,是可以直接放到tomcat下运行的工程。
打成pom包和jar包的工程在新建的时候可以不需要制定maven项目的原型,达成war包的项目需要制定maven项目原型,指定的原型通常为maven-archetype-webapp,代表web项目。
其中最常用的就是maven clean和maven install,maven常用命令如下:
mvn compile #编译源代码
mvn test-compile #编译测试代码
mvn test #运行测试
mvn site #产生site
mvn package #打包
mvn install #在本地Repository中安装jar
mvn clean #清除产生的项目
mvn eclipse:eclipse #生成eclipse项目
mvn idea:idea #生成idea项目
mvn -Dtest package #组合使用goal命令,如只打包不测试
mvn test-compile #编译测试的内容
mvn jar:jar #只打jar包
mvn archetype:create -DgroupId=packageName -DartifactId=projectName #创建Maven的普通java项目
mvn archetype:create -DgroupId=packageName -DartifactId=webappName -DarchetypeArtifactId=maven-archetype-webapp #创建Maven的Web项目