Maven是一个项目管理和综合工具. Maven提供了开发人员构建一个完整的生命周期框架. 开发团队可以自动完成项目的基础工具建设, Maven使用标准的目录结构和默认构建生命周期.
使用Maven的好处
1.Maven不仅是构建工具, 它还是依赖管理工具和项目管理工具, 提供了中央仓库, 能够帮我们自动下载构件
2.为了解决的依赖的增多, 版本不一致, 版本冲突, 依赖臃肿等问题, 它通过一个坐标系统来精确地定位每一个构件(artifact)。
3.帮助我们分散在各个角落的项目信息, 包括项目描述, 开发者列表, 版本控制系统, 许可证, 缺陷管理系统地址。
4.Maven还为全世界的java开发者提供了一个免费的中央仓库, 在其中几乎可以找到任何的流行开源软件.
5.Maven对于目录结构有要求, 约定优于配置
参考来源:http://blog.csdn.net/nancy_feng/article/details/38148625
Maven下载地址: https://maven.apache.org/download.cgi
运行vim ~/.bash_profile
命令
添加如下内容到文件中(安装目录根据个人情况而不同)
MAVEN_HOME=/usr/local/Cellar/apache-maven-3.5.0
export MAVEN_HOME
PATH=$MAVEN_HOME/bin:$PATH
export PATH
运行source ~/.bash_profile
保存设置, 结果如图:
本地仓库
Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件, 这些文件被Maven下载)到本地文件夹. 很简单, 当你建立一个Maven项目, 所有相关文件将被存储在你的Maven本地仓库. 默认情况下, Maven的本地资源库默认为 .m2 目录文件夹
中央仓库 https://mvnrepository.com/artifact/org.apache
可以通过修改位于maven_home下conf文件夹中的settings.xml文件来修改本地仓库的存储位置等默认配置信息
使用了“约定优于配置”的原则, 不同的文件存储在不同的项目结构中
src/main/java, src/test/java: 主要用来存储Java的源代码, 这两个目录中的所有*.java文件会分别在comile和test-comiple阶段被编译, 编译结果分别放到了target/classes和targe/test-classes目录中, 但是这两个目录中的其他文件都会被忽略掉
src/main/resource: 存储资源文件, 这个目录中的文件也会被复制到target/classes 目录中
target/classes(下文展示): 编译过程会将产生的所有.class结尾的文件存储到这个目录中
接下来最终要的就是pom.xml文件了,这里管理着maven项目的基本信息,以及依赖的jar包和所使用的插件,默认如图
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>testgroupId>
<artifactId>testartifactId>
<version>1.0-SNAPSHOTversion>
project>
Maven有三套相互独立的生命周期
— Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
— Default Lifecycle 构建的核心部分, 编译, 测试, 打包, 部署等等。
— Site Lifecycle 生成项目报告, 站点, 发布站点(不常用)
下面简单的介绍一下每个生命周期中涉及的命令和插件 (插件的配置信息可以在pom.xml文件中添加相应的节点进行修改)
mvn compile 使用 maven-compiler-plugin 插件编译项目,将生成的文件存储到target/classes目录下
mvn test 使用maven-surefire-plugin 插件运行测试, 在使用该插件运行之前会使用 maven-compiler-plugin 对项目进行编译
mvn package 使用maven-jar-plugin 插件对target下目录的内容进行打包成jar包, 但是在打包之前还需要进行一些其他操作,如图
mvn clean 使用maven-clean-plugin插件移除生成的target目录
以上只是对Maven中的一些比较重要的点进行简单的介绍, 想要更好的学习Maven请参考其他资源
主要是针对开发语言scala环境和jar依赖的配置, 如下xml可以帮助我们开发spark应用, 更多依赖请自行去中央仓库进行下载(仓库提供xml格式引用信息)
<dependencies>
<dependency>
<groupId>org.apache.sparkgroupId>
<artifactId>spark-core_2.11artifactId>
<version>2.2.0version>
dependency>
<dependency>
<groupId>org.scala-langgroupId>
<artifactId>scala-libraryartifactId>
<version>2.11.8version>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.scala-langgroupId>
<artifactId>scala-compilerartifactId>
<version>2.11.8version>
plugin>
<plugin>
<groupId>org.scala-toolsgroupId>
<artifactId>maven-scala-pluginartifactId>
<version>2.15.2version>
plugin>
plugins>
build>
打包命令
mvn clean Scala:compile compile package