走进Spark生态圈:使用Maven构建Spark开发环境

Maven是什么?

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

配置Maven环境变量

运行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保存设置, 结果如图:
走进Spark生态圈:使用Maven构建Spark开发环境_第1张图片

Maven仓库

本地仓库

Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件, 这些文件被Maven下载)到本地文件夹. 很简单, 当你建立一个Maven项目, 所有相关文件将被存储在你的Maven本地仓库. 默认情况下, Maven的本地资源库默认为 .m2 目录文件夹

中央仓库 https://mvnrepository.com/artifact/org.apache

可以通过修改位于maven_home下conf文件夹中的settings.xml文件来修改本地仓库的存储位置等默认配置信息

IntelliJ IDEA创建的结构

走进Spark生态圈:使用Maven构建Spark开发环境_第2张图片

使用了“约定优于配置”的原则, 不同的文件存储在不同的项目结构中

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的生命周期

Maven有三套相互独立的生命周期

— Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
— Default Lifecycle 构建的核心部分, 编译, 测试, 打包, 部署等等。
— Site Lifecycle 生成项目报告, 站点, 发布站点(不常用)

下面简单的介绍一下每个生命周期中涉及的命令和插件 (插件的配置信息可以在pom.xml文件中添加相应的节点进行修改)

Default Lifecycle

mvn compile 使用 maven-compiler-plugin 插件编译项目,将生成的文件存储到target/classes目录下
走进Spark生态圈:使用Maven构建Spark开发环境_第3张图片

mvn test 使用maven-surefire-plugin 插件运行测试, 在使用该插件运行之前会使用 maven-compiler-plugin 对项目进行编译
走进Spark生态圈:使用Maven构建Spark开发环境_第4张图片

mvn package 使用maven-jar-plugin 插件对target下目录的内容进行打包成jar包, 但是在打包之前还需要进行一些其他操作,如图
走进Spark生态圈:使用Maven构建Spark开发环境_第5张图片

Clean Lifecycle

mvn clean 使用maven-clean-plugin插件移除生成的target目录

以上只是对Maven中的一些比较重要的点进行简单的介绍, 想要更好的学习Maven请参考其他资源

Maven配置Spark的开发环境

主要是针对开发语言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

你可能感兴趣的:(Spark)